Korrekte Verwendung von addEventListener () / attachEvent ()?
Frage ich mich, wie zu verwenden addEventListener
bzw. attachEvent
richtig?
window.onload = function (myFunc1) { /* do something */ }
function myFunc2() { /* do something */ }
if (window.addEventListener) {
window.addEventListener('load', myFunc2, false);
} else if (window.attachEvent) {
window.attachEvent('onload', myFunc2);
}
//...
oder
function myFunc1() { /* do something */ }
if (window.addEventListener) {
window.addEventListener('load', myFunc1, false);
} else if (window.attachEvent) {
window.attachEvent('onload', myFunc1);
}
function myFunc2() { /* do something */ }
if (window.addEventListener) {
window.addEventListener('load', myFunc2, false);
} else if (window.attachEvent) {
window.attachEvent('onload', myFunc2);
}
//...
?
Ist dieser cross-browser sicherer, oder sollte ich besser gehen mit so etwas wie dies:
function myFunc1(){ /* do something */ }
function myFunc2(){ /* do something */ }
//...
function addOnloadEvent(fnc){
if ( typeof window.addEventListener != "undefined" )
window.addEventListener( "load", fnc, false );
else if ( typeof window.attachEvent != "undefined" ) {
window.attachEvent( "onload", fnc );
}
else {
if ( window.onload != null ) {
var oldOnload = window.onload;
window.onload = function ( e ) {
oldOnload( e );
window[fnc]();
};
}
else
window.onload = fnc;
}
}
addOnloadEvent(myFunc1);
addOnloadEvent(myFunc2);
//...
UND: Sagen myfunc2
ist für den IE 7 nur. Wie Sie die richtige/bevorzugte Methode entsprechend?
InformationsquelleAutor der Frage ginny | 2010-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Nutzung der beiden ist ähnlich, obwohl beide nehmen Sie auf eine etwas andere syntax für Ereignis-parameter:
addEventListener (mdn Referenz):
Veranstaltungen-Liste für
addEventListener
.attachEvent (msdn-Referenz):
Veranstaltungen-Liste für
attachEvent
.Argumente
Für beide Methoden die Argumente sind wie folgt:
1. Ist der event-Typ.
2. Ist die Funktion aufrufen, sobald das Ereignis ausgelöst wurde.
3. (
addEventListener
nur) Wenn true, zeigt an, dass der Benutzer wünscht, zu initiieren erfassen.Erklärung
Beide Methoden werden verwendet, um das gleiche Ziel erreichen zu befestigen, ein Ereignis an ein element.
Der Unterschied ist, dass
attachEvent
können nur verwendet werden, auf älteren Dreizack rendering-engines (IE5+IE5-8*) undaddEventListener
ist eine W3-standard, der umgesetzt wird in den meisten anderen Browsern (FF, Webkit, Opera, IE9+).Als Smitty empfohlen, sollten Sie einen Blick auf diese Dustin Diaz addEvent für eine solide cross-browser-Implementierung, die ohne den Einsatz eines Frameworks.
Für solid cross-browser event-Unterstützung, z.B. Normierungen, dass Sie nicht bekommen, mit der Diaz Lösung verwenden Sie eine Rahmen.
*IE9-10 unterstützt beide Methoden, für die rückwärts Kompatibilität.
Dank Lukas Puplett für den Hinweis, dass
attachEvent
wurde entfernt IE11.InformationsquelleAutor der Antwort hitautodestruct
Jemand noch schlagen diese Diskussion und nicht finden, die Antwort Sie gesucht haben Kasse:
http://dustindiaz.com/rock-solid-addevent
Dies ist eine der elegantesten Lösungen die ich gefunden, für diejenigen von uns, die Einschränkungen bei der Verwendung von frameworks.
InformationsquelleAutor der Antwort Smitty