• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

window.onload

jabaa

Neues Mitglied
gelöst: window.onload

Hallo,
ich brauche window.onload. Doch leider klappts bei mir nicht so, wie ich möchte. Ich habe im HEAD
HTML:
<head>
.
.
.
  <script type="text/javascript">  
    function load(){  
      alert("load event detected!");  
    }  
    window.onload = load;  
  </script> 
<head>
eingetragen. Doch es tut sich nix. Wenn ich aber zusätzlich
HTML:
<body onload="load();">
eintrage, läuft es. Die zweite Variante kommt aber aus bestimmten Gründen hier nicht in Frage. Woran könnte das denn liegen?

Gruß
Jabaa
 
Zuletzt bearbeitet:
Werbung:
Das onload-Attribut wird geladen sobald der Tag in dem es steht geladen wurde.

window.onload wird ausgeführt sobald die Seite komplett geladen wurde und der DOM somit komplett bereitsteht. Solltest Du den IE verwendet haben, würde das vermutlich nicht ausgeführt werden. Dieser Browser macht das nur, wenn noch das Attribut "defer" im script-Tag steht. Andere Browser verhalten sich dort eigentlich normal.
 
Ich arbeite in der Regel mit dem Firefox. Eigentlich sollten sich ja beide Varianten gleich verhalten. Das ist aber nicht so. Irgendwo mach ich sicher was falsch. Weiß aber nicht was
 
Werbung:
Sollte trotzdem gehen, da er die Funktion als Referenz übergibt. Es müsste also ein weiteres onload da sein, welches das gewünschte onload überschreibt.
 
Zuletzt bearbeitet:
Also es liegt definitiv nicht am IE. Er kennt window.onload schon seit der 4. Version mit Referenzfunktionen.
 
Werbung:
Kennen ja, nur führt er es erst aus, wenn die Seite komplett geladen wurde - was vom IE aber falsch verarbeitet wird. Daher muss man für den IE im script-Element noch "defer" angeben um das zu umgehen.
 
Ah, ich mache das anders ^^
Einfach das <script> aus dem Head raus und ganz am Ende des bodys setzen.
Dort mache ich's dann so:

PHP:
(function(window) {
  var document = window.document;
  // hier wird dann alles ausgeführt.
})(window);
 
Werbung:
Hallo,
ich brauche window.onload. Doch leider klappts bei mir nicht so, wie ich möchte. Ich habe im HEAD
HTML:
<head>
.
.
.
  <script type="text/javascript">  
    function load(){  
      alert("load event detected!");  
    }  
    window.onload = load;  
  </script> 
<head>
eingetragen. Doch es tut sich nix.
Doch natürlich tut sich was. Haste mal in die Fehlerkonsole geschaut?
 
Ah, ich mache das anders ^^
Einfach das <script> aus dem Head raus und ganz am Ende des bodys setzen.
Dort mache ich's dann so:

PHP:
(function(window) {
  var document = window.document;
  // hier wird dann alles ausgeführt.
})(window);
Das ist durchaus sinnvoll, aber nicht das Gleiche wie onload. onload wird erst gefeuert, wenn alle Resourcen des Dokuments geladen worden sind. Je nachdem ob das wichtig ist oder nicht sollte man aber deine Variante bevorzugen. Wobei die anonyme Funktion eigentlich überflüssig ist
 
Werbung:
JSLint verursacht ja keinen Ärger, sondern macht nur Vorschläge. Wovon ich ein paar auch für falsch halte. (oder hielt, ich sehe gerade, dass die Optionen erweitert wurden) Ich halte aber von dem Tool nicht viel, die Fehlerkonsole ist ausreichend
 
Werbung:
Ich finde es nicht sinnvoll, weil viele Sachen, die dort bemäkelt werden unsinnig sind.
 
Eine Sache verstehe ich nicht dort. Wenn ich window benutze (anders als in meiner Methode von oben), schimpft JSLint mich aus mit implied global. Ich verstehe den Fehler, wüsste aber beim besten Willen nicht, wie man diesen Fehler umgeht. ^^
 
Das ist genau sowas. Auch ein if(x) tu_was(); wird von jslint bemäkelt, weil er unbedingt die Klammern haben will.
 
Werbung:
Das kann ich noch verstehen, denn es ist nicht wirklich sauber, bzw. nicht sehr übersichtlich.
Im strikten Modus würde er auch noch meckern, weil du kein Leerzeichen zwischen das if und die Klammer gesetzt hat ^^ Das ist wirklicher Humbug.
 
Klammern habe ich mir angewöhnt dort zu setzen. Es ist einfach besser strickten Code-Style zu haben, wenn man im Team arbeitet.
 
Zurück
Oben