Зачем использовать `javascript: void (0)` вместо `javascript:` как href ничего не делать заполнитель?

Я видел href="javascript:void(0)", и я видел href="javascript:;" Есть ли какая-то причина, по которой я бы просто не использовал href="javascript:"?

Изменить: Позвольте мне пояснить: я комбинирую это с onclick и не возражаю против использования return false, если возникает необходимость использовать альтернативу. Конечно, это только в том случае, если альтернатива лучше понимает javascript:.

Кроме того, мне еще нужно увидеть ответ на мой вопрос (я думаю, я думаю) в первом абзаце. Спасибо, Дэвид.:)

Я видел href="javascript:void(0)", и я видел href="javascript:;" Есть ли какая-то причина, по которой я бы просто не использовал href="javascript:"?

Ответы

Ответ 1

Не отвечает на вопрос, но может немного рассказать о нем, некоторые ранние версии браузеров, такие как netscape, имели проблемы, когда в href использовался script.

Оператор void был в значительной степени единственным способом заставить клик ничего не делать.

Теперь, когда браузеры правильно реализуют "псевдо URL-адреса", вы можете просто использовать javascript:;.

Ответ 2

Лично я бы избегал использовать. Вместо этого я бы использовал onclick='return false;' и просто установил href='#'.

Почему? Потому что, если вы поместите Javascript-код в href, он появится в строке состояния браузера, когда вы наводите курсор на ссылку, как и любой другой URL-адрес. Это выглядит грязно.

На самом деле, поскольку он все равно будет проигнорирован, вы можете поместить любой URL, который вы представляете в href, а не только хеш. Хэш безопасен, на всякий случай, если у вашего пользователя отключен Javascript, но, кроме этого, это может быть что угодно.

Но я должен указать: наличие тега <a> с href, идущим к пустому Javascript-коду, скорее всего, означает потерю тега <a> в первую очередь. Я вижу, как вы хотите включить и отключить ссылку во время выполнения, но просто установка href в void кажется несколько бессмысленной. Если это не будет реальной ссылкой, почему бы просто не использовать <span> или какой-либо другой тег. Если вы должны сделать его похожим на ссылку, это тривиально сделать это в CSS.

Ответ 3

Идеальная ситуация - не помещать какой-либо код в сам элемент, а скорее использовать javascript либо в теге script, либо во внешнем файле и привязывать обработчик событий.

Ответ 4

Лучше не использовать. Атрибут href указывает URL-адрес. Лучше использовать обработчики событий для получения желаемого поведения, что, вероятно, является событием onclick.

В этом случае желаемое поведение, по-видимому, состоит в том, чтобы ничего не делать. Во-первых, зачем вообще использовать привязывающий тег, когда он нигде не связан? Во-вторых, это может быть связано с предотвращением пузырьков событий, позволяя обработчику события onclick возвращаться false. Затем href может указывать на # или лучше, даже если он указывает на URL-адрес, который более или менее имеет тот же эффект, что и обработчик событий, поэтому он будет деградировать изящно при отключении javascript.