Ссылка должна иметь цель HREF, которая должна быть указана, чтобы она могла использоваться в качестве экранного объекта.
Большинство браузеров не будут анализировать расширенный JavaScript в
<A HREF=""
тег, такой как:
<A href="JavaScript:var elem = document.getElementById('foo');"
поскольку тег HREF в большинстве браузеров не допускает пробелы или преобразует пробелы в% 20, HEX равнозначен пробелу, что делает ваш JavaScript абсолютно бесполезным для интерпретатора.
Поэтому, если вы хотите использовать тег HREF для выполнения встроенного JavaScript, вы должны указать допустимое значение для HREF FIRST, которое не слишком сложно (не содержит пробелов), а затем предоставить JavaScript в теге атрибута события, например OnClick. , OnMouseOver, OnMouseOut и т. Д.
Типичный ответ - сделать что-то вроде этого:
<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>
Это прекрасно работает, но заставляет страницу переходить наверх, потому что это указывает знак фунта / хэш-тег.
Простое указание знака фунта / хеш-тега в теге HREF фактически указывает корневой якорь, который всегда по умолчанию является верхней частью страницы, и вы можете указать другое местоположение, указав атрибут NAME внутри тега A HREF.
<A NAME='middleofpage'></A>
Затем вы можете изменить свой тег A HREF, чтобы перейти на «middleofpage» и выполнить JavaScript в событии OnClick, как только это произойдет так:
<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>
Будет много раз, когда вы не хотите, чтобы эта ссылка перепрыгивала, поэтому вы можете сделать две вещи:
<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>
Теперь при нажатии на нее она никуда не денется, но это может привести к повторному центрированию страницы из текущего окна просмотра. Это не красиво. Каков наилучший способ предоставления встроенного JavaScript с использованием A HREF, но без необходимости делать что-либо из перечисленного выше? JavaScript: недействительным (0);
<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>
Это говорит браузеру, что нужно идти НИЧЕГО, но вместо этого выполнить действительный JavaScript: void (0); Функция сначала в теге HREF, потому что она не содержит пробелов и не будет анализироваться как URL. Вместо этого он будет выполняться компилятором. VOID - это ключевое слово, которое, когда оно снабжено параметром 0, возвращает UNDEFINED, которое больше не использует ресурсы для обработки возвращаемого значения, которое может возникнуть без указания 0 (это более удобно для управления памятью / производительности).
Следующим, что происходит, является выполнение OnClick. Страница не перемещается, ничего не происходит для отображения.
javascript:
это одна из многих схем URI: en.wikipedia.org/wiki/URI_scheme , напримерdata:
.