Дополнительно
Что означает "javascript:void(0)"?
<a href="javascript:void(0)" id="loginlink">login</a>
Я'видел такие href
много раз, но я'не знаю, что именно это значит.
1281
15
Объяснение приведено здесь: оператор
void
.Причина, по которой вы хотите сделать это с
href
ссылки, заключается в том, что обычно URLjavascript:
перенаправляет браузер на текстовую версию результата оценки этого JavaScript. Но если результат будетundefined
, то браузер останется на той же странице.void(0)
- это просто короткий и простой сценарий, который оценивается вundefined
.In addition to the technical answer,
javascript:void
means the author is Doing It Wrong.There is no good reason to use a
javascript:
pseudo-URL(*). In practice it will cause confusion or errors should anyone try things like ‘bookmark link’, ‘open link in a new tab’, and so on. This happens quite a lot now people have got used to middle-click-for-new-tab: it looks like a link, you want to read it in a new tab, but it turns out to be not a real link at all, and gives unwanted results like a blank page or a JS error when middle-clicked.<a href="#">
is a common alternative which might arguably be less bad. However you must remember toreturn false
from youronclick
event handler to prevent the link being followed and scrolling up to the top of the page.In some cases there may be an actual useful place to point the link to. For example if you have a control you can click on that opens up a previously-hidden
<div id="foo">
, it makes some sense to use<a href="#foo">
to link to it. Or if there is a non-JavaScript way of doing the same thing (for example, ‘thispage.php?show=foo’ that sets foo visible to begin with), you can link to that.Otherwise, if a link points only to some script, it is not really a link and should not be marked up as such. The usual approach would be to add the
onclick
to a<span>
,<div>
, or an<a>
without anhref
and style it in some way to make it clear you can click on it. Именно так поступал StackOverflow [на момент написания статьи; сейчас он используетhref="#"
].Недостатком этого является то, что вы теряете контроль клавиатуры, так как вы не можете нажать табуляцию на span/div/bare-a или активировать его пробелом. Является ли это недостатком на самом деле, зависит от того, для каких действий предназначен элемент. Можно, приложив некоторые усилия, попытаться имитировать взаимодействие с клавиатурой, добавив
tabIndex
к элементу и ожидая нажатия клавиши Space. Но это никогда не сможет на 100% воспроизвести реальное поведение браузера, не в последнюю очередь потому, что разные браузеры могут по-разному реагировать на клавиатуру (не говоря уже о невизуальных браузерах).Если вам действительно нужен элемент, который не является ссылкой, но может быть активирован обычным образом с помощью мыши или клавиатуры, то вам нужен `
(или
<input type="button">` - для простого текстового содержимого). При желании вы всегда можете использовать CSS для изменения стиля, чтобы он больше походил на ссылку, чем на кнопку. Но поскольку она ведет себя как кнопка, именно так ее и следует обозначать.(*: во всяком случае, при создании сайтов. Очевидно, что они полезны для букмарклетов.
javascript:
псевдо-URL - это концептуальная странность: локатор, который не указывает на местоположение, а вместо этого вызывает активный код внутри текущего местоположения. Они вызвали огромные проблемы безопасности как для браузеров, так и для веб-приложений, и не должны были быть изобретены Netscape).Это означает, что это ничего не даст. Это попытка сделать так, чтобы ссылка никуда не "переходила". Но это не правильный способ.
На самом деле вы должны просто
возвращать false
в событииonclick
, как показано ниже:Обычно это используется, если ссылка выполняет какую-то "JavaScript-штуку". Например, размещает AJAX-форму, или меняет изображение, или что-то еще. В этом случае вы просто заставляете вызываемую функцию возвращать
false
.Однако, чтобы сделать ваш сайт совершенно потрясающим, обычно вы включаете ссылку, которая выполняет то же действие, если человек, просматривающий ее, решит не использовать JavaScript.
Есть огромная разница в поведении и"#" и против код JavaScript:недействительным
и"#" и свитки вы в верхней части страницы а на "код JavaScript:недействительным(0);" не.
Это очень важно, если вы кодирования динамических страниц. пользователь не хочет вернуться в топ только потому, что он нажал на ссылку на странице.
Это очень популярный метод добавление функции JavaScript к HTML-ссылки.<БР>например:
[печать]
ссылки, которые вы видите на многих веб-страницы пишутся так:Зачем нужны
Солар
ащелчку
в одиночку может сделать работу? Потому что при наведении курсора на текст 'принт' когда там's нетблизко
, то курсор изменится на курсор (ꕯ) вместо указателя (👆). Только имеяСолар
наа
тег проверяет ее как гиперссылку.Альтернативу я
с href="и код JavaScript:недействительным(0);&;
, использованиес href=" и#то"
. Эта альтернатива не'т требуют Javascript должен быть включен в пользовательский'с браузера, так как она совместима.В тегах a всегда должна быть ссылка href. Вызов функции JavaScript, которая возвращает 'undefined', подойдет как нельзя лучше. Также как и ссылка на '#'.
Теги якоря в Internet Explorer 6 без href не получают стиль
a:hover
.Да, это ужасно и является небольшим преступлением против человечества, но опять же, как и Internet Explorer 6 в целом.
Надеюсь, это поможет.
Internet Explorer 6 на самом деле является крупным преступлением против человечества.
Это's стоит отметить, что вы'будете иногда видеть недействительными 0 при проверке определено, просто потому, что он требует меньше символов.
Например:
и
Некоторые методы минификации замены неизвестной с недействительными 0 по этой причине.
"пустота" - это оператор, который используется для возвращения с "неопределенным" значением, так что браузер не сможет загрузить новую страницу.
Веб-браузеров будет попробовать и взять все, что используется в качестве URL-адрес и загрузить его, если это функция JavaScript, которая возвращает null. Например, если мы щелкнем на ссылке такой:
то предупреждающее сообщение будет отображаться без загрузки новой страницы, и это потому, что
оповещения
- это функция, которая возвращает значение null. Это означает, что, когда браузер пытается загрузить новую страницу, он видит нуль и ничто для загрузки.Важная вещь, чтобы отметить о оператор Void является то, что он требует значения и не может быть использован сам по себе. Мы должны использовать его как это:
Использование код JavaScript:недействительным(0) означает, что автор в HTML злоупотребляет анкерный элемент на место элемента button.
Источник: МДН'ы
<и>
страницы.Чтобы понять эту концепцию, следует сначала понять оператор Void в JavaScript.
Синтаксис для оператора пустота: пустота «выражение», по которым оценивает выражение и возвращает undefined.
Если вы реализуете пустоту как функция, то она выглядит следующим образом:
Этот оператор Void имеет одно важное использование, которое отбрасываем результат выражения.
В некоторых ситуациях важно, чтобы возвращать undefined в отличие от результата выражения. Тогда пустота может быть использован, чтобы отменить результат. Одна такая ситуация связана с JavaScript: URL-адреса, которые следует избегать ссылок, но полезны для букмарклеты. Когда вы посетите один из этих URL-адресов, многие браузеры заменить текущий документ с результатом вычисления адресов “содержание”, но только если результат не определен. Поэтому, если вы хотите открыть новое окно без изменения отображаемого контента, вы можете сделать следующее:
В
пустоту
оператор вычисляет выражение и возвращает значение undefined. Это позволяет избежать перезагрузки страницы.Веб-разработчикам использовать код JavaScript:недействительным(0) потому что это самый простой способ, чтобы предотвратить поведение по умолчанию
а
тег.пустота(*все*)
возвращает undefined, и значение ложь. и возвращает значение ложь каквернет false
нафункция onclick
событиеа
тег, который предотвращает его поведение по умолчанию.Поэтому я думаю, что
код JavaScript:недействительным(0) является простым способом, чтобы предотвратить поведение по умолчанию
а` тег.Ссылка должна иметь цель href Для быть определена, чтобы позволить ему быть объектом полезной дисплея.
Большинство браузеров не будет разбирать расширенный JavaScript в
На JavaScript: URL-адреса в сторону, где пустота может быть полезно писать более короткий код.
Другой пример, где используется
в JavaScript.пустота(0)
. Я'м не уверен, является ли это правильный способ, но работаетв
в