Почему не работает return false?
важность: 3
Почему в коде ниже return false
не работает?
<script>
function handler() {
alert( "..." );
return false;
}
</script>
<a href="https://w3.org" onclick="handler()">браузер откроет w3.org</a>
Браузер переходит по указанной ссылке, но нам этого не нужно.
Как поправить?
Когда браузер считывает атрибут on*
, например onclick
, он создаёт функцию-обработчик с содержимым этого атрибута в качестве тела функции.
Функция для onclick="handler()"
будет:
function(event) {
handler() // содержимое onclick
}
Сейчас нам видно, что возвращаемое значение handler()
не используется и не влияет на результат.
Исправить очень просто:
<script>
function handler() {
alert("...");
return false;
}
</script>
<a href="https://w3.org" onclick="return handler()">w3.org</a>
Также мы можем использовать event.preventDefault()
, например:
<script>
function handler(event) {
alert("...");
event.preventDefault();
}
</script>
<a href="https://w3.org" onclick="handler(event)">w3.org</a>