¿Por qué "return false" no funciona?
importancia: 3
¿Por qué en el código de abajo return false
no funciona en absoluto?
<script> function handler() { alert( "..." ); return false; } </script> <a href="https://w3.org" onclick="handler()">el navegador irá a w3.org</a>
El navegador sigue la URL al hacer clic, pero no la queremos.
¿Como se arregla?
Cuando el navegador lee un atributo on*
como onclick
, crea el controlador a partir de su contenido.
Para onclick="handler()"
la función será:
function(event) { handler() // el contenido de onclick }
Ahora podemos ver que el valor devuelto por handler()
no se usa y no afecta el resultado.
La solución es simple:
<script> function handler() { alert("..."); return false; } </script> <a href="https://w3.org" onclick="return handler()">w3.org</a>
También podemos usar event.preventDefault()
, así:
<script> function handler(event) { alert("..."); event.preventDefault(); } </script> <a href="https://w3.org" onclick="handler(event)">w3.org</a>