11

Vedo "SCRIPT3: membro non trovato". errore in IE < 9. Guardando varie posizioni, (ad esempio, Member not found IE error (IE 6, 7, 8, 9)) sembra che si verifichi nella porzione setTimeout all'interno di .hover().IE <9 che mostra "Membro non trovato"

Ho seguito i passaggi ma ho ancora lo stesso problema. Sarei grato per qualsiasi aiuto.

Probabilmente potrebbe verificarsi anche nei punti all'interno di change() fn.

ho messo l'intero codice a: http://jsfiddle.net/f4tZQ/

+0

si può aggiungere la modifica come risposta? –

+0

Nel file jquery-1.6.2.js, riga 3172, ho commentato 'e.cancelBubble = true; 'e inserito ' if (typeof e.cancelBubble! == 'unknown') {e.cancelBubble = true; } '. In altre parole, una leggera modifica del file jQuery originale. – maan81

+0

Siamo spiacenti. Volevo aggiungere il codice: commentato - 'e.cancelBubble = true;' e inserito - 'if (typeof e.cancelBubble! == 'unknown') {e.cancelBubble = true; } ' – maan81

risposta

6

Dopo qualche ricerca, mi sembra di essere colpiti da jQuery bug. Seguendo il "commento: 4", cambiando il file jQuery-1.6.2.js, la riga 3172 risolve il problema.

if (typeof e.cancelBubble !== 'unknown') { e.cancelBubble = true; } 

non chiedere perché, ma ha funzionato ... Per qualche motivo jQuery o IE restituisce 'sconosciuto' qui al posto di 'undefined'.

presso:

Fonte: http://bugs.jquery.com/ticket/10004

+0

Vedere la mia domanda per ulteriori informazioni su" sconosciuto "in IE: http://stackoverflow.com/questions/10982739/typeof-returning-unknown-in-ie –

+3

Modificare JQuery è una cattiva idea. – Nicknameless

8

Per gli altri che ottengono qui che non vogliono modificare il sorgente di jQuery ... (PER L'AMORE DI DIO non lo faccio)

Questo succede in < 9 durante l'attivazione di eventi personalizzati. Se hai accesso all'evento prima che arrivi al punto in cui si verifica l'arresto anomalo, spostati nella catena di eventi originale e imposta l'ultima = {};

Il seguente codice si riferisce a quando si sta facendo affidamento su jQuery per elaborare il valore di ritorno dei gestori di eventi (false) da qualche parte lungo la catena. Se si desidera annullare l'evento qui, vedere i commenti - avvolgere una chiamata a e.stopPropagation() in un blocco try/catch

var handleAndFire = function(e) { 
var ev = new $.Event('stack.overflow'); 

    //you may have to debug and manually inspect to see how 
    //deep the originalEvents go 
    //or you could write your own function to traverse 
    //depth first and find it automatically, I'm lazy. 
    e.originalEvent.originalEvent = {}; //fix for ie < 9 
    ev.originalEvent = e; 
    $(document).trigger(ev);  
} 
$(document).click(handleAndFire); 
+2

Bello. Ho scoperto che la modifica di "e.originalEvent.originalEvent" ha interrotto la chiamata "stopPropagation()" (nessun arresto anomalo ma nessun arresto di propagazione) nel mio caso, che era la fonte del crash in primo luogo. Ho finalmente risolto il problema avvolgendo la chiamata in una try/catchall: 'try {event.stopPropagation(); } catch (e) {} ' – Simon

+0

Questa è una buona soluzione per chiamare event.stopPropagation(), ma non aiuta se stai restituendo false e lasciando che jQuery si fermi da solo. – scaryman

Problemi correlati