Правильный способ для ссылок для выполнения кода JavaScript - PullRequest
6 голосов
/ 08 сентября 2010

Итак, я знаю о 4 основных методах выполнения кода JavaScript по ссылке.В соответствии с моими требованиями я должен делать это, не перемещая экран в любом месте (ссылка на # и не возвращать false - это плохо).SEO для исполняемого кода Javascript, по возможности, тоже важен.Итак, что является правильным способом сделать это?

метод 1 (необходимо убедиться, что myCode () всегда возвращает false):

<a href="#" onclick="return myCode();">execute</a>

метод 2 (кажется, имеет смысл?):

<a href="javascript:myCode();">execute</a>

метод 3:

<a href="javascript:void(0);" onclick="myCode();">execute</a>

метод 4 (не так семантически приятен, как другие, я думаю):

<span id="executeMyCodeLink" class="link">execute</a>
<script>
$('#executeMyCodeLink').click(myCode);
</script>

с методом 4, выКонечно, можно использовать и onclick.

Ответы [ 6 ]

5 голосов
/ 08 сентября 2010

Вы заставляете страницу не переходить и используете тег "a" с href и методом 4 с использованием protectDefault.

<a id="executeMyCodeLink" href="#">execute</a>
<script>
  $('#executeMyCodeLink').click(function(event) {
    event.preventDefault();
    myCode();
  });
</script>

Важно включить href, поскольку ссылки не будут правильно оформляться, а ваш HTMLне будет проверять иначе.

4 голосов
/ 08 сентября 2010

Я предпочитаю метод 4, но с двумя отличиями:

  • Переместите скрипт в отдельный файл.Ненавязчивый JavaScript радует JavaScript.
  • Используйте тег a, ссылку на # и возвращайте false.
2 голосов
/ 08 сентября 2010

<a href="#_"> тоже работает, поэтому вам не нужно return false.(Любая несуществующая привязка будет работать на самом деле).

Кроме того, метод 4 работает, только если вы используете jQuery.Большинство моих сайтов имеют только один или два небольших эффекта javascript, я не загружаю jQuery для этого.

0 голосов
/ 08 сентября 2010

Мне также нравится метод 4.По возможности я стараюсь не помещать ничего напрямую в четные атрибуты или записывать js прямо в href.Я делаю это потому, что в большинстве случаев я действительно ставлю URL-адрес не в формате js в качестве href, поэтому он ухудшается для браузеров, не поддерживающих js.Второй резон - я не люблю загрязнять элементы грязью: -)

0 голосов
/ 08 сентября 2010

Я тоже предпочитаю метод 4.

Привязка событий к отдельным объектам - более элегантный способ, и я думаю, что это хорошая привычка программирования.

0 голосов
/ 08 сентября 2010

Использование jquery - это ненавязчивый способ обработки вызовов javascript.Поэтому я бы сказал, способ 4. Вы также можете просто сделать:

$(a#linkId).click(...);
...