9

IE9 è ancora in beta, ma tutti uguali, ecco una domanda:disabilitare un collegamento in IE9 - fermata prototipo() non funziona

Uso prototype.js 1.6.1, la forma corretta per l'aggiunta di un evento click a un link, e ignorare il comportamento predefinito di collegamento, potrebbe essere:

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

Anche se questo funziona perfettamente in ogni altro browser che ho provato, IE9 è un caso unico. Il comportamento di evento predefinito si attiva e il mio collegamento mi porta nella posizione collegata. Sembra che stop() non stia facendo il suo lavoro in IE9.

Il seguente codice funziona perfettamente in IE9:

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

Qualsiasi idea di cosa avrei potuto fare per riparare la metodologia prototipo per l'uso in IE9?

+0

Perché stai pensando in IE9 ** beta ** per, ancora? –

+1

Solo provando a prova futura il mio sito. Penso che il prototipo 1.7 allevierà il problema, poiché hanno lavorato per ospitare IE9 (http://www.prototypejs.org/2010/10/12/prototype-1-7-rc3-support-for-ie9) – Gromeen

risposta

9

versioni prototype.js inferiori a 1.7 esegue lo sniffing del browser per applicare correzioni cross-browser compatibili.

prototype.js sovrascrive i metodi nativi con la sua implementazione, che non riesce in IE 9; anche se ha supporto per DOM Level 2 Events.

La versione più recente di prototype.js non ha questo problema, come fa 'funzione di rilevamento' piuttosto che 'il browser-sniffing' modalità

+1

Specificamente , le versioni precedenti del prototipo sovrascrivono preventDefault() in modo tale che il default non sia più impedito. – EricLaw

+0

Il metodo Event.stop() non ha funzionato in 1.7rc2 su IE9. Nella versione finale di 1.7, funziona. –

1

Modifica documento agli standard IE8 mettendo il seguente tag all'interno <head></head>:

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 
Problemi correlati