9

IE9 todavía está en beta, pero de todos modos, aquí hay una pregunta: ¿desactivar un enlace en IE9 - Parada prototipo() no funciona

Uso prototype.js 1.6.1, la forma apropiada para añadir un evento de clic a un enlace, y reemplazar el comportamiento predeterminado de los vínculos, sería:

mylink.observe('click', function(e){ 
    doSomething(); 
    e.stop(); 
}); 

Aunque esto funciona perfectamente en cualquier otro navegador que lo intentara, IE9 es un caso único. El comportamiento de evento predeterminado se dispara y mi enlace me lleva a la ubicación vinculada. Parece que stop() no está haciendo su trabajo en IE9.

El siguiente código funciona perfectamente en IE9:

mylink.onclick = function(){ 
    doSomething(); 
    return false; 
} 

Cualquier idea de lo que podía hacer para arreglar la metodología prototipo para su uso en IE9?

+0

¿Por qué está envviéndose en IE9 ** beta ** para, otra vez? –

+1

Solo estoy intentando probar mi sitio en el futuro. Creo que el prototipo 1.7 aliviará el problema, ya que han estado trabajando para dar cabida a IE9 (http://www.prototypejs.org/2010/10/12/prototype-1-7-rc3-support-for-ie9) – Gromeen

Respuesta

9

versiones de prototype.js de menos de 1.7 hace que el navegador husmee para aplicar correcciones compatibles entre navegadores.

prototype.js sobrescribe los métodos nativos con su implementación, que falla en IE 9; incluso, aunque tiene soporte para los eventos DOM Nivel 2.

La versión más reciente de prototype.js no tiene este problema como lo hace 'detección de características' en lugar de 'explorador-sniffing' modo de

+1

Específicamente , las versiones anteriores del prototipo anulan preventDefault() de tal manera que ya no se previene el valor predeterminado. – EricLaw

+0

El método Event.stop() no funcionó en 1.7rc2 en IE9. En la versión final de 1.7, funciona. –

1

Cambio documento a las normas IE8 poniendo la siguiente etiqueta en el interior <head></head>:

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 
Cuestiones relacionadas