Что такое javascript:void(0);?
Ребят, всем привет.
Есть сайт. Там есть ссылка с href="#"
. Что это? И как узнать, на что ссылается, и где этот скрипт? Есть доступ ко всем исходникам.
Ребят, всем привет.
Есть сайт. Там есть ссылка с href="#"
. Что это? И как узнать, на что ссылается, и где этот скрипт? Есть доступ ко всем исходникам.
void(0)
— это выражение, получающееся приведением типа константы 0 к void
. То есть простое ничего не значащее выражение.
Ссылка в таком виде просто ничего не делает. (И это популярная идиома, кстати.) Не исключено, скрипт на странице модифицирует href
позже, чтобы ссылка делала что-то более вразумительное; но пока/если этот скрипт не пробежал, ссылка останется такой, как есть.
Когда браузер переходит по ссылке javascript:
, то заменяет содержание страницы на возвращаемое значение, кроме случаев, когда вернулось undefined
. Оператор void
всегда возвращает это самое значение undefined
.
Подробно (на англ.): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
В старых браузерах была возможность создать переменную с именем undefined. Соответственно, чтобы получить значение undefined используется такая конструкция. Конструкции void можно передать любое число/тип переменной - void 123,void [] так же вернет undefined.
Конструкцию типа href="#"
используют обычно тогда, когда вместе обычного перехода по ссылке должен сработать js скрипт.
Примеры таких случаев - открытие модального окна, отправка/получение данных с помощью ajax или необходимость проверить какие-то данные с помощью js перед тем как совершить переход по этой ссылке.
Чтобы найти скрипт, который срабатывает при клике на эту ссылку стоит посмотреть в режиме инспектора. Пример как это можно сделать, на скриншоте:
href="#"
добавляют, чтобы при нажатии на ссылку, которая выполняет не свою прямую функцию, страница не прокручивалась вверх, а всё оставалось на месте
В данном случае - это то же самое, что return false;