Чому "return false" не працює?
важливість: 3
Чому в коді нижче return false
взагалі не працює?
<script>
function handler() {
alert( "..." );
return false;
}
</script>
<a href="https://w3.org" onclick="handler()">браузер перейде на w3.org</a>
Браузер переходить за URL-адресою після кліку, але нам це не потрібно.
Як це виправити?
Коли браузер зчитує атрибут 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>