Чому "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>