Joachim: externes script dynamisch: dom oder document.write?

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

--
Am Ende wird alles gut.
  1. 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

    1. 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

      --
      Am Ende wird alles gut.
    2. 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

  2. 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.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. 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

      --
      Am Ende wird alles gut.
      1. 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.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. 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

          --
          Am Ende wird alles gut.
        2. 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