Wie Feuer "onload" - event auf Dokument im IE

Ich bin derzeit auf der Entwicklung von Unit-Tests für Javascript-Methode, die erkennt die Bereitschaft des Dokuments. Dieser code ist bereits auf framework-Ebene, so vermeiden Sie bitte erwähnt dies bereits in jQuery oder eine andere Bibliothek.

Habe ich erfolgreich simuliert die 'readystatechange' change-Ereignis mit dem folgenden code:

var event;
event = document.createEventObject();
event.type = 'readystatechange';
document.fireEvent('onreadystatechange',event);

Ich es nicht tun das gleiche für den 'load' - event. Der folgende code führt zu einem ungültigen argument Fehler im IE7, ausgelöst durch den Aufruf von fireEvent in der letzten Zeile:

event = document.createEventObject();
event.type = 'load';
document.fireEvent('onload',event);

Hat jemand dies getan, oder nicht zu tun, dies vor? Ich interessiere mich auch für jede Anregung zum auslösen des Ereignisses in einer anderen Weise.

Edit: nach dem Vorschlag von Crescent Frische, änderte ich meinen code an:

event = document.createEventObject();
event.type = 'load';
document.body.fireEvent('onload',event);

Es ist kein Fehler mehr, aber der Hörer für 'onload' wird nicht ausgelöst. Hier ist, wie ich es konfiguriert:

document.attachEvent('onload',listener);
  • Die load Ereignis tatsächlich feuert auf document.body. So können Sie versuchen, statt document.body.fireEvent('onload',event). Ich bezweifle, dass Ihnen tatsächlich Feuer Griffe befestigt onload obwohl. Wenn es das täte, wäre ich schockiert....
  • Sie sind 100% Recht. Die Entlassung der Veranstaltung auf dem Dokument.Körper kann getan werden, ohne Fehler, aber die Zuhörer mit dem beigefügten Dokument.attachEvent werden nicht ausgelöst.
  • dachte so viel. Das ist ein doofer Mann.
  • Frisch Zu schlecht. Wenn du deinen Kommentar in eine Antwort werde ich mich freuen, es zu akzeptieren. Irgendeinem Grund hinter der Tatsache, dass 'readystatechange' und 'laden' anders Verhalten?
  • Sie sollten wahrscheinlich auch zu legen, um den document.body.attachEvent() statt nur document.attachEvent()
  • wahrscheinlich... ich bin in Sie suchen, nur Kontrolle, wenn ich fälschlicherweise angenommen, dass document.attachEvent('onload', etwas) sollte immer Feuer
  • Ich glaube nicht, dass Handler angehängt document.body.attachEvent('onload', ...) Feuer, wenn die Seite geladen wird, normalerweise jedenfalls. IE zwingt Sie zu befestigen, entweder über <body onload="...", window.onload = ... oder window.attachEvent('onload', ...).
  • aber anscheinend window-onload-und-Dokument.body onload sind die gleichen? zucken nur so ein Gedanke...
  • NÖ. <body onload="..." ist der einzige Weg, um die Karte an das Fenster onload Fall, soweit ich weiß. document.body.attachEvent('onload', ...) wird einfach ignoriert.
  • Im IE natürlich.
  • Frisch-das ist die Schlussfolgerung, die ich gerade erreicht durch ausführen ein paar neue tests: Listener für das 'onload' - Ereignis werden nur entlassen werden, DH, wenn angebracht durch das Fenster.attachEvent, nicht Dokument.attachEvent noch Dokument.Körper.attachEvent

Schreibe einen Kommentar