¿Alguien puede decirme o señalarme algún recurso que explique por qué usar javascript:void(0)
en hipervínculos es dañino (especialmente en Internet Explorer 6)?¿Por qué javascript: void (0) se considera dañino?
Respuesta
El uso de la palabra clave javascript:
en un enlace no se recomienda de todos modos. Sólo he conseguido encontrar un artículo sobre por qué podría ser perjudicial:
a href=”javascript:void(0);” — avoid the void
Pero el consenso general demuestra que no se debe utilizar, ya que podría confundir a los navegadores sin soporte javascript, para algunos de los navegadores se podría analizar como un enlace no válido.
En su lugar, debe proporcionar un enlace a una página, ya sea trabajando alrededor de la funcionalidad que proporcionaría javascript o mostrando un mensaje sobre el sitio que requiere javascript para funcionar correctamente. En el mismo enlace, return false;
de su evento, así:
<a href="noscript.html" onclick="doSomething(); return false;">I'm a link</a>
O, alternativamente, utilizar return false;
o preventDefault()
y returnValue
en el código javascript:
element.onclick = function()
{
/*
// return false is better for most situations (see bobince's comment)
if (event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
*/
doSomething();
return false;
}
Haga clic en <a href="javascript:void(0)" />
desencadena evento "beforeunload" en objeto "ventana" IE (he probado en IE10), pero haga clic en <a href="#" />
no.
IE 11 no se activa antes de descargar más cuando se hace clic en dicho enlace. – tsh
- 1. ¿Se considera `qrefresh` dañino?
- 2. (¿por qué) se considera dañino el selector de estrella CSS?
- 3. # o javascript: void (0)?
- 4. javascript :; vs javascript: void (0);
- 5. href = "javascript:" vs. href = "javascript: void (0)"
- 6. "si" se considera dañino en archivos ASP.NET MVC View (.aspx)?
- 7. ¿Por qué usar 'href =' javascript: void (0); '' en lugar de algo más fácil de usar?
- 8. de desciframiento (* (void (*)()) 0)()
- 9. ¿Por qué sizeof (void) == 1?
- 10. ¿Por qué {} + [] devuelve 0 en Javascript?
- 11. ¿Por qué 0 == "" verdadero en JavaScript
- 12. ¿Por qué es "0 === -0" verdadero en JavaScript?
- 13. ¿Por qué usar `javascript: void (0)` en lugar de `javascript:` como un href no hacer nada marcador de posición?
- 14. ¿Por qué el ORM se considera bueno pero el "seleccionar *" se considera malo?
- 15. ¿Por qué esta matriz de Java se considera bidimensional?
- 16. Diferencia entre virtual void funcFoo() const = 0 y virtual void funcFoo() = 0;
- 17. ¿Qué significa "#define assert (exp) ((void) 0)" do?
- 18. ¿Por qué 'para (var item in list)' con arrays se considera una mala práctica en JavaScript?
- 19. ¿Por qué es (Infinity | 0) === 0?
- 20. ¿Se considera que estos cierres son Javascript?
- 21. ¿Por qué se considera sizeof a un operador?
- 22. Rcov: ¿Por qué este código no se considera cubierto?
- 23. por qué utilizar Conde con IQueryable se considera inviable
- 24. ¿Por qué se considera que un "tipo inestable" es malo
- 25. ¿Por qué este certificado X.509 no se considera válido?
- 26. ¿Por qué asignar o inicializar NSDateFormatter se considera "costoso"?
- 27. Por qué se considera que HTTP/SOAP es "grueso"
- 28. ¿Por qué la co-varianza de array se considera tan horrible?
- 29. ¿Por qué main() en java void?
- 30. ¿Por qué Void es una estructura?
Gracias por eso Andy. Conozco los problemas asociados con los clics y he echado un vistazo al blog que mencionaste. Pero, no he encontrado ni una sola explicación válida de por qué javascript: void (0) se considera perjudicial (suponiendo que hacemos todo el retorno falso y esas cosas). – Abhi
@Abhi: Esa publicación de blog sugiere que las imágenes desaparecen cuando se envuelve con un enlace 'void (0)' en IE, no puedo decir que lo he experimentado yo mismo. Más allá de esto, no estoy seguro de que 'void' sea * realmente * dañino. –
Yo tampoco, no creo que ese problema, sea lo que sea, estuviera relacionado con 'void'. Sin embargo, nunca utilizar enlaces 'javascript:' es un buen consejo. Si usa manejadores de eventos asignados por JavaScript en preferencia a los atributos 'onclick =" ... "' (y este es en general el mejor enfoque), utilizar 'return false' es, con mucho, la respuesta más sencilla, ya que funcionará en IE y otros navegadores sin necesidad del objeto evento en absoluto. El ejemplo anterior no 'cancelBubble' en IE, y no funciona en otros navegadores debido a la falta del parámetro 'event' (el' event' global es solo IE). – bobince