2010-02-15 18 views

Respuesta

4

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; 
} 
+0

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

+0

@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. –

+2

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

1

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.

+0

IE 11 no se activa antes de descargar más cuando se hace clic en dicho enlace. – tsh

Cuestiones relacionadas