Javascript anchor избежать прокрутки вверху по щелчку
Я создал функцию в javascript, которую я добавляю к якорю как таковой
javascript:
somefunction = function () {alert('foo')}
html:
<a href="#" onclick="return somefunction()">anchor</a>
каждый раз, когда я нажимаю на якорь, функция выполняет, но экран прокручивается в начало
Я знаю, что могу это сделать
<a href="javascript:void(0)" onclick="return somefunction()">anchor</a>
но я видел первый вариант, реализованный без этой подсказки прокрутки вверх
есть ли какой-нибудь трюк?
Благодарю вас
Ответы
Ответ 1
Onclick заставляет страницу повторно отправить, поэтому прокручивается вверх.
Вам нужно событие onclick, чтобы вернуть false, чтобы избежать обратной передачи.
Это можно сделать, изменив функцию, чтобы вернуть false:
somefunction = function () {alert('foo'); return false;}
Или для изменения ссылки и события onClick для этого:
<a href="javascript:void(0)" onclick="somefunction(); return false;">anchor</a>
Ответ 2
Фокус в том, что ваш onclick возвращает значение somefunction
, так что если вы убедитесь, что somefunction
всегда return false
, тогда событие также вернет значение false и отменяет поведение якоря. /p >
Итак, это должно решить вашу проблему:
somefunction = function () { alert('foo'); return false; }
Но я должен упомянуть, что когда есть ошибка где-то в somefunction
, остальная часть javascript не будет выполняться, и браузер по-прежнему будет следовать ссылке на #
. Поэтому рекомендуется использовать javascript:void(0)
, так как это избавит вас от этой проблемы.
Ответ 3
Верните false
из обработчика onclick, например:
<a href="#" onclick="somefunction(); return false;">anchor</a>
Ответ 4
Вам нужно сделать somefunction()
return false
, или вам нужно явно добавить return false
к вашему обработчику onclick
. Например:
<a href="#" onclick="somefunction(); return false;">anchor</a>
Это приведет к тому, что браузер игнорирует часть href
ссылки, когда кто-то нажимает на нее.