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

wann und wo js-datein laden? probleme mit später eingebundenen inhalt (über php)

Animal21

Neues Mitglied
Hallo leute,
ich hab in der PHP-Section noch einen Thread aufgemacht, der mit dem hier in verbindung stehen könnte:
http://www.html.de/php/40477-javascript-ueber-php-laden.html#post293092

Neben meinem Problem, welches ich in der PHP-Section beschrieben habe, wöllte ich gern mal wissen, wie und wann JS- geladen werden muss.

Also ich meine:
JS als ScriptSprache, brauch es die Inhalte schon beim laden um alle referenzen zu setzen, oder sucht es sich die erst später raus, wenn es in anspruch genommen wird.
Kommt es bei nachgeladenen Inhalten zu Problemen, bzw. muss dann js neu geladen werden?

Danke

mfg
ani
 
eine javascript musst du nicht sofort mit der seite laden lassen. Bindest du das script aber in deinen Quellcode, wird es sofort geladen. Wenn du ein script später laden willst, würde ich das so machen:
script = document.createElement("script");
script.setAttribute("type","text/javascript");
script.setAttribute("src",url);
script.onload = function(){
...
}

ich hoffe, das war was du gemeint hast...
 
Ich würde JavaScript-Dateien immer vorher laden. Du gehst das Problem in meinen Augen aber falsch an: Benutze nur eine JavaScript-Datei und nicht eine pro Seite, denn das, was du sparst an geladenen Bytes, verlierst du bestimmt wieder an gesendeten Headern der JavaScript-Dateien.
Nimm eine JavaScript-Datei für alles, die du von Anfang an einbindest.
 
ok, aber da ich mootools und einige js-klassen habe, sollte ich zumind diese in extra datein lege, (also z.b. eine datei für klassen und eine für events...)
ich werds mal probieren

hmm, also einige sachen funtionieren dann leider nicht mehr :(
 
Es gibt in JavaScript keine Klassen. Ich sehe ein, dass du Mootools in einer Datei benutzen kannst und dann den Rest in einer anderen. Gecached wird das alles sowieso.
 
Also PHP kann dir eigentlich egal sein bei der Benutzung von JS. Denn Der Apache liefert dir ja die fertig geparste Seite, die dann aus HTML besteht.
Aber zu der eigentlichen Frage:
Wo sollen die Dateien geladen werden?: Da trennen sich die Geister. Ich lasse meine externen JS Dateien im Headbereich laden. Nun habe ich aber die Tage folgenden Artikel gelesen wo steht:
Bleibt noch anzumerken, dass es aus Performance-Sicht ratsam ist, externe JavaScript-Dateien am Ende der Seite und nicht wie ursprünglich vorgesehen im HTML-Header unterzubringen (vgl. dazu die Anmerkung von Anders Janmyr zum Einsatz von JavaScript).
Stand in einem Artikel auf heise.de
Vererbung und Klassen | heise Developer

Die andere Sachen ist die Anzahl an JS Dateien, die man laden will. Hier empfiehlt es sich wie Asterixus schon erwähnt hat möglichst wenig (im besten Fall eine Datei) zu laden.
Das hat den einfachen Grund, den ich jetzt einfach mal zitieren werde:
Quelle: High Performance Javascript | Jayway Team Blog - Sharing Experience
With normal loading, the files are loaded sequentially. Each file will
be loaded and parsed before the next file starts to load.
So
mit ist es wesentlich schneller eine große JS File zu laden als viele kleine. Wie du die Performance noch steigern kannst steht hier geschrieben High Performance Javascript | Jayway Team Blog - Sharing Experience
 
ok,
also ich hab jetzt nur noch 4 js datein zu laden
- mootool core + mootools extra stuff...
- dann die mootools klassen die ich geschrieben habe (ich meinte mit js-klasse die von mootools...)
- eine event-js-datei, in der alle events über mootools abgefangen und bearbeitet werden...

aus irgendeinem grund, ging nicht alles, wenn ich es im header geladen hatte.
Bin nochmal alle zeilen durchgegangen mit tests etc., aber konnte nix finden.

Hab dann aus Spaß die datein mal am ende vom body gesetzt und siehe da, alles funzt wieder super...

Vll scheint js doch nicht alles mitzubekommen, wenn ich über php was nachlade... weis auch nicht.

Schon klar, dass php server-seitig ist und js erst aktiv wird, wenn der server alle daten an den client übermittelt hat.
Wüsst echt gern was da phase is.

ansonsten schonmal danke für eure antworten. Mit nur 4 großen Datein geht das laden mekrlich schneller... hätt ich nicht vermutet.

mfg
ani
 
Vll scheint js doch nicht alles mitzubekommen, wenn ich über php was nachlade... weis auch nicht.

Schon klar, dass php server-seitig ist und js erst aktiv wird, wenn der server alle daten an den client übermittelt hat.

Du widersprichst dir da selbst ... Lass dir gesagt sein, dass es nicht an PHP liegt. Das gleiche wäre dir auch mit HTML Dateien passiert, wenn du den Inhalt, den dir z.B. die about.php ausgibt manuell in die index.html kopiert hättest, weil eben "schon klar" ist, dass PHP serverseitig geparst wird und nur HTML an den Client übermittelt. Und dann gibts kein "vielleicht gehts nicht, wenn ich über php was nachlade".
 
Das die Dateien funktionieren, wenn sie am Ende stehen, hat wahrscheinlich nichts mit dem Laden der Scripts zu tun sondern dem Auflegen von Events.
Wenn du ein Klick Event auf zum Beispiel einen Link setzen willst, dann muss dieser schon geladen worden sein. Wenn du das nun einfach im Kopf ausführst ist ja noch nichts im body geladen. Er lädt die Seite nämlich Stück für Stück und führt den geladen Code auch direkt beim laden aus. Wenn das erst ausgeführt werden soll, wenn der body geladen wurde gibt es eine Funktion, die aufgerufen wird, sobald die Seite geladen wurde.
Und zwar window.onload.
Aber deine Möglichkeit geht natürlich auch die ganz ans Ende zu setzen ;)
 
Zurück
Oben