externes script dynamisch: dom oder document.write?
Joachim
- javascript
0 suit0 Felix Riesterer
moin,
brauch mal einen Rat bzw. Erfahrungswerte, über die ich selber nicht verfüge.
Ein externes js soll in Abhängigkeit eines Cookie-Wertes geladen werden. Wie zuverlässig schätzt Ihr jeweils Einfügen mit document.write oder das Reinnhängen per dom ein?
Danke für Tipps und Grüsse,
Joachim
Ein externes js soll in Abhängigkeit eines Cookie-Wertes geladen werden. Wie zuverlässig schätzt Ihr jeweils Einfügen mit document.write oder das Reinnhängen per dom ein?
von document.write ist prinzipiell abzuraten, da es in "echtem xhmtl" (als ausgeliefert als application/xhtml+xml - also als xml geparsed) nicht funktioniert - man sollte sich das bei zeiten mal abgewöhnen
"javascript aus" ist selbst eib unsicherheitsfaktor, der nächste ist "cookies aus"
prinzipiell ist aber gegen javascript und dom nichts einzuwenden
Hi,
von document.write ist prinzipiell abzuraten, da es in "echtem xhmtl" (als ausgeliefert als application/xhtml+xml - also als xml geparsed) nicht funktioniert
guter Einwand.
"javascript aus" ist selbst eib unsicherheitsfaktor, der nächste ist "cookies aus"
Da bin ich vergleichsweise tolerant - ausserdem ist es hier eh Tracking-Zeugs...
Danke und Gruesse, Joachim
Hallo,
von document.write ist prinzipiell abzuraten, da es in "echtem xhmtl" (als ausgeliefert als application/xhtml+xml - also als xml geparsed) nicht funktioniert - man sollte sich das bei zeiten mal abgewöhnen
Wenn man kein echtes XHTML schreibt, muss man auch nicht unbedingt diese Regeln beachten; und wenn man XHTML schreibt, kann man m.M.n. immer noch seine JavaScript anpassen (das würde einem dann ohnehin aus anderen Gründen um die Ohren fliegen). Bis dahin würde ich mir echt nicht den Kopf zerbrechen.
Andererseits wurde hier auch mal ein document.write-Nachbau für XML gepostet, so kommt es letztlich aufs Gleiche hinaus.
Mathias
Lieber Joachim,
was hat
Ein externes js soll in Abhängigkeit eines Cookie-Wertes geladen werden.
mit
document.write oder das Reinnhängen per dom ein?
zu tun?
Wenn Du ein JavaScript lädst, dann notierst Du im <head> Deiner Seite einen <script>-Bereich, der ein JavaScript aus einer externen Datei lädt. Nix mit document.write oder "Reinnhängen per dom". Wenn das Script die Cookie-Daten (oder das Cookie selbst) findet, wird es aktiv, ansonsten eben nicht.
Wo ist Dein Problem?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi Felix,
Wo ist Dein Problem?
_immer_ bei den Kollegen vom Marketing. Da lauert es im Hinterhalt: wer will schon fremde Tracking-Scripte freiwillig fix einbinden?
Aber wenn es was *wichtiges* wäre gäbe ich Dir Recht ;-)
Gruesse, Joachim
Lieber Joachim,
Wo ist Dein Problem?
_immer_ bei den Kollegen vom Marketing.
_das_ glaube ich _sofort_. ;-)
Da lauert es im Hinterhalt: wer will schon fremde Tracking-Scripte freiwillig fix einbinden?
Dann schreibe doch ein wrapper-Script, welches über DOM-Methoden ein <script>-Element in den <head> einbindet und damit das Tracker-Script in die Seite bringt!
In etwa so (ungetestet!):
<script type="text/javascript">
window.oldWinOnLoad = window.onload; // alte onload-Funktion(en) speichern
window.onload = function () {
if (typeof(window.oldWinOnLoad) == "function")
window.oldWinOnLoad();
// eventuell hier einen Prüf-Mechanismus für Cookie ausführen
if ("cookie") {
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://www.example.org/fieses_tracker_script.js";
document.getElementsByTagName("head")[0].appendChild(s);
}
};
</script>
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi Felix,
_das_ glaube ich _sofort_. ;-)
das kommt offenbar von Herzen ;-)
In etwa so (ungetestet!):
es kommt noch ein script.onload/onreadystatechange für callback hinzu, aber so etwa wirds werden...
Danke & Gruesse, Joachim
Hallo,
Nur zur Ergänzung:
document.write hat ja den Vorteil, dass man nicht auf onload, DOMContentLoaded und so weiter warten muss. Aber das muss und sollte man beim Einfügen über das DOM auch nicht. Ein Script hat zumindest Zugriff auf den DOM-Baum bis zu dem zum Script gehörigen script-Element. Also müsste für ein Script im Head der Zugriff auf das head-Element schon möglich sein.
Andererseits: Ein Tracking-Script läuft eh im Hintergrund und kann damit auch später geladen und ausgeführt werden. In dem Fall ist es ziemlich Jacke wie Hose.
Mathias