¿Cuál es el efecto de agregar "return false" a un detector de eventos de clic?
Muchas veces he visto enlaces como estos en páginas HTML:
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
¿Cuál es el efecto de return false
ahí dentro?
Además, normalmente no veo eso en los botones.
¿Se especifica esto en alguna parte? ¿En alguna especificación en w3.org?
El valor de retorno de un controlador de eventos determina si también debe realizarse el comportamiento predeterminado del navegador. En el caso de hacer clic en enlaces, esto sería seguir el enlace, pero la diferencia es más notable en los controladores de envío de formularios, donde puede cancelar el envío de un formulario si el usuario ha cometido un error al ingresar la información.
No creo que exista una especificación W3C para esto. Todas las interfaces antiguas de JavaScript como esta recibieron el sobrenombre de "DOM 0" y en su mayoría no están especificadas. Quizás tengas suerte leyendo la documentación antigua de Netscape 2.
La forma moderna de lograr este efecto es llamar event.preventDefault()
, y esto se especifica en la especificación DOM 2 Events .
Puedes ver la diferencia con el siguiente ejemplo:
<a href="http://www.google.co.uk/" onclick="return (confirm('Follow this link?'))">Google</a>
Al hacer clic en "Aceptar", se devuelve verdadero y se sigue el enlace. Al hacer clic en "Cancelar", se devuelve falso y no se sigue el enlace. Si javascript está deshabilitado, el enlace se sigue normalmente.