Зачем использовать `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.