Почему не работает return false?
важность: 3
Почему в этом документе return false
не работает?
<script>
function handler() {
alert( "..." );
return false;
}
</script>
<a href="http://w3.org" onclick="handler()">w3.org</a>
По замыслу, переход на w3.org
при клике должен отменяться. Однако, на самом деле он происходит.
В чём дело и как поправить?
Дело в том, что обработчик из атрибута onclick
делается браузером как функция с заданным телом.
То есть, в данном случае он будет таким:
function(event) {
handler() // тело взято из атрибута onclick
}
При этом возвращаемое handler
значение никак не используется и не влияет на результат.
Рабочий вариант:
<script>
function handler() {
alert("...");
return false;
}
</script>
<a href="http://w3.org" onclick="return handler()">w3.org</a>
Также можно использовать объект события для вызова event.preventDefault()
, например:
<script>
function handler(event) {
alert("...");
event.preventDefault();
}
</script>
<a href="http://w3.org" onclick="handler(event)">w3.org</a>