Fenster.onload auszulösen scheint vor dem DOM geladen wird (JavaScript -)

Ich habe ein Problem mit dem Fenster.onload und zu dokumentieren.onload-events. Alles was ich lese sagt mir, diese wird nicht ausgelöst, bis der DOM vollständig geladen ist, mit all seinen Ressourcen, wie es scheint, dies ist nicht der Fall für mich:

Ich habe versucht, die folgende einfache Seite in Chrome 4.1.249.1036 (41514) und IE 8.0.7600.16385 mit dem gleichen Ergebnis: sowohl die Anzeige der Meldung "fehlgeschlagen!", darauf hinweist, dass myParagraph nicht geladen wird (und so der DOM scheint unvollständig).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <script type="text/javascript">
            window.onload = doThis();
            //document.onload gives the same result

            function doThis() {
                if (document.getElementById("myParagraph")) {
                    alert("It worked!");
                } else {
                    alert("It failed!");
                }
            }
        </script>
    </head>

    <body>
        <p id="myParagraph">Nothing is here.</p>
    </body>
</html>

Ich bin mit komplexeren Skripten, als dieses in eine externe .js-Datei, aber das verdeutlicht das problem. Ich kann es arbeiten, indem er Fenster.onload-stellen Sie einen timer für eine halbe Sekunde ausführen doThis(), aber das scheint wie eine unelegant Lösung, und nicht die Frage beantworten, warum Fenster."onload" scheint nicht das zu tun, was jeder sagt, es tut. Eine andere Lösung wäre, einen timer einstellen, das überprüfen wird, wenn das DOM geladen ist, und wenn nicht wird er nur selbst aufrufen, eine halbe Sekunde später (so wird es keep smiling, bis die DOM geladen ist), aber das scheint zu kompliziert für mich.
Gibt es eine geeignete Veranstaltung zu verwenden?

  • Erste Fehler, den ich sehe, ist, dass Sie assing Funktion [Ergebnis] anstelle der [function] selbst. Sehen Sie doThis() ist eine Anweisung, die den Wert undefiniert zurückgibt, nach der Auswertung, weil doThis hat keine return Betreiber. window.onload = doThis; wird die Arbeit machen. Hinweis: es gibt keine parenthes
  • W3Schools ist eine schlechte Quelle von Informationen. Sie sind nicht in Verbindung mit den W3C-in keiner Weise. Nicht behandeln, w3schools, als maßgebliche Quelle der Informationen behandeln Sie so, wie Sie es verdienen behandelt zu werden: ärgernis links, die Sie haben, zu überspringen, wenn Sie suchen für eine echte Referenz-website.
  • der Gegenwart mich stimmt völlig. Ich empfehlen w3fools.com für jeden, der sich unsicher ist. Ich Neige dazu, gerade zu gehen für developer.mozilla.org für hochwertige info in diesen Tagen, dann machen Sie eine umfassendere Suche, wenn ich nicht finde was ich Suche, gibt (die ist in der Regel, wenn ich versuche, etwas zu tun, lächerlich). Ich bin mir ziemlich peinlich, dass die Vergangenheit mich geschrieben... aber ich kann es löschen! Gibt es, eine weniger naive Verweis auf w3schools über das Internet 🙂 vielen Dank für das Auffinden es.
InformationsquelleAutor David Mason | 2010-03-20
Schreibe einen Kommentar