14 Stimmen

Sollte ich window.onload oder einen Skriptblock verwenden?

Ich habe eine Javascript-Funktion, die das DOM manipuliert, wenn sie aufgerufen wird (fügt CSS-Klassen, etc.). Diese Funktion wird aufgerufen, wenn der Benutzer einige Werte in einem Formular ändert. Wenn das Dokument zum ersten Mal geladen wird, möchte ich diese Funktion aufrufen, um den Ausgangszustand vorzubereiten (was in diesem Fall einfacher ist als das Einrichten des DOM von der Serverseite in den richtigen Ausgangszustand).

Ist es besser, window.onload zu verwenden, um diese Funktionalität zu tun, oder einen Skriptblock nach den DOM-Elementen zu haben, die ich ändern muss? Warum ist es in beiden Fällen besser?

Zum Beispiel:

function updateDOM(id) {
    // updates the id element based on form state
}

sollte ich es über aufrufen:

window.onload = function() { updateDOM("myElement"); };

oder:

<div id="myElement">...</div>
<script language="javascript">
    updateDOM("myElement");
</script>

Ersteres scheint der Standardweg zu sein, aber letzteres scheint genauso gut zu sein, vielleicht sogar besser, da es das Element aktualisiert, sobald das Skript aufgerufen wird, und solange es nach dem Element platziert wird, sehe ich kein Problem damit.

Haben Sie eine Idee? Ist die eine Version wirklich besser als die andere?

1voto

The How-To Geek Punkte 1095

Während ich mit den anderen über die Verwendung von window.onload wenn möglich für sauberen Code übereinstimme, bin ich ziemlich sicher, dass window.onload wieder aufgerufen wird, wenn ein Benutzer die Schaltfläche "Zurück" in IE drückt, aber nicht wieder in Firefox aufgerufen wird. (Es sei denn, sie haben es kürzlich geändert).

Edit: Ich könnte das falsch verstanden haben.

In einigen Fällen ist es notwendig, Inline-Skripte zu verwenden, wenn Sie möchten, dass Ihr Skript ausgewertet wird, wenn der Benutzer von einer anderen Seite auf die Schaltfläche "Zurück" klickt, um zu Ihrer Seite zurückzukehren.

Alle Korrekturen oder Ergänzungen zu dieser Antwort sind willkommen... Ich bin kein Javascript-Experte.

1voto

John Millikin Punkte 190278

@The Geek

Ich bin mir ziemlich sicher, dass window.onload erneut aufgerufen wird, wenn ein Benutzer im IE auf die Schaltfläche "Zurück" drückt, aber in Firefox nicht erneut aufgerufen wird. (Es sei denn, sie haben es kürzlich geändert).

In Firefox, onload wird aufgerufen, wenn das DOM fertig geladen ist, unabhängig davon, wie Sie zu einer Seite navigiert haben.

0voto

David Basarab Punkte 69965

Ich nehme die erste, weil Sie nur 1 window.onload-Funktion haben können, während Inline-Skriptblöcke Sie eine n Nummer.

0voto

DancesWithBamboo Punkte 4165

OnLoad, weil es viel einfacher ist, festzustellen, welcher Code ausgeführt wird, wenn die Seite geladen wird, als sich durch Unmengen von HTML zu lesen und nach Skript-Tags zu suchen, die ausgeführt werden könnten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X