Warum sagt FF, dass window.event nicht definiert ist? (Aufruf der Funktion mit hinzugefügtem Ereignis-Listener)
Ich habe ein Problem in diesem Teil:
var ex = {
exampl: function(){
var ref=window.event.target||window.event.srcElement; //here
alert(ref.innerHTML); //(example)
}
}
Diese Funktion wird so aufgerufen:
document.body.childNodes[0].addEventListener('mouseover',ex.exampl,true);
Nur Firefox sagt, dass window.event
ist nicht definiert...
Ich weiß nicht, was zu tun ist, damit es funktioniert. Es funktioniert sehr gut in webkit-Browsern und opera (kann ich nicht überprüfen, es im MSIE und ich don ' T care about it).
Warum ist es passiert?
InformationsquelleAutor der Frage anony_root | 2012-03-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen Sie, die Veranstaltung mit der übergebenen parameter (namens
e
in diesem Fall). getestet habe ich diese und die beidenwindow.event
und diee
unterstützt in chrome.versuchen Sie, für beide, je nachdem, was vorhanden ist
InformationsquelleAutor der Antwort Joseph
Weil
window.event
existiert nicht in Firefox. Das ist, weil die browser haben unterschiedliche event-Modelle, und Sie müssen, um Ihre Unterschiede oder benutzen Sie eine Bibliothek wie jQuery nicht haben, um alle Unterschiede zwischen den Browsern. Willkommen in der DOM.InformationsquelleAutor der Antwort mpm
window.event
ist kein feature, es ist ein bug!Zitieren MDN:
Und vor allem:
window.event
ist nicht standard, also nicht erwarten, dass alle Browsern, die es unterstützen.Erste parameter der callback-Funktion in
element.addEventListener()
ist einEvent
Objekt. Verwenden Sie anstelle vonwindow.event
.InformationsquelleAutor der Antwort Michał Perłakowski
Chrome hat es nicht nativ. Anstatt jedes event trigger pass eigenes event-Objekt, DH gesunken Eigenschaften ins Fenster.event-und Linkshänder, aus. Dies funktioniert, da bist du immer nur der Umgang mit einem Ereignis zu einem Zeitpunkt. Was jeder browser sollte ist Fenster.Ereignis, ist der eigentliche Konstruktor für die event-Objekte. Wenn Sie sehen, " - Fenster.event' überall, aber IE8 und unten, öffnen Sie eine Konsole auf einem leeren Reiter und-Protokollierung oder die Alarmierung, die es gibt. Die Chancen sind, etwas ist, indem es manuell auf der Seite, die Sie suchen.
Wenn man sich crossbrowser Normalisierung-code für event-Handler, werden Sie oft sehen:
Dass die event-Normalisierung-code Umgang mit älteren IE-Versionen. In modernen Browsern, e soll seine eigene Objekt übergeben wird, durch Argumente, nicht einen Verweis auf eine Eigenschaft des Fensters.
InformationsquelleAutor der Antwort Erik Reppen