Axel: Variablen in nachgeladener Datei

Hallo Leute,

ein kleines Javascript Problem:

Ich lade mit Javascript dynamisch eine externe Javascript-Datei nach. Dies mache ich folgendermaßen:
    var s = document.createElement("script");
    s.src = "extern.js";
    s.type="text/javascript";
    document.getElementsByTagName("head")[0].appendChild(s);

Den Code habe ich im Internet gefunden. Prinzipiell funktioniert das auch. Schreibe ich in "extern.js" z.B. einen alert, bekomme ich diesen angezeigt. Mein Problem ist nun, dass ich auf Variablen, die in extern.js deklariert sind (global) nicht zugreifen kann.

Gibt es da irgendwelche Einschränkungen?

Vielen Dank im Voraus
Schöne Grüße
Axel

  1. Hi,

    Mein Problem ist nun, dass ich auf Variablen, die in extern.js deklariert sind (global) nicht zugreifen kann.

    wann?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      wann?

      oh ähm. Direkt im Anschluß. Also so:

      var s = document.createElement("script");
      s.src = "extern.js";
      s.type="text/javascript";
      document.getElementsByTagName("head")[0].appendChild(s);

      alert(abc.length);

      Das ergibt im alert eine 0. In der extern.js steht drin:

      abc = new Array();
      abc.push("a");
      abc.push("b");
      ...

      Auch schon mit var abc = new Array(); getestet, was aber ja eh kein Unterschied machen sollte.

      Vielen Dank schonmal
      Schöne Grüße
      Axel

      1. Hi,

        wann?
        oh ähm. Direkt im Anschluß.

        aus welchem Grund vermutest Du, sollte das neu eingebundene Script dann bereits geladen und ausgeführt worden sein?

        Auch schon mit var abc = new Array(); getestet, was aber ja eh kein Unterschied machen sollte.

        Doch: Es deklariert die Variable explizit. Und wie wir alle wissen: Explicit is better than implicit.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,

          aus welchem Grund vermutest Du, sollte das neu eingebundene Script dann bereits geladen und ausgeführt worden sein?

          He, hatt ich mal so angenommen :-) Vielen Dank für den Hinweis. Dann werde ich jetzt am Ende der extern.js einen Funktionsaufruf einbauen.

          Auch schon mit var abc = new Array(); getestet, was aber ja eh kein Unterschied machen sollte.

          Doch: Es deklariert die Variable explizit. Und wie wir alle wissen: Explicit is better than implicit.

          MMh. Ok. Dann mach ich das explizit. Aber interessieren würde mich daran noch WARUM das "better" ist. Aber das kann ich auch mal nachlesen.

          Schöne Grüße
          und nochmal vielen Dank
          Axel

          1. Hi,

            Doch: Es deklariert die Variable explizit. Und wie wir alle wissen: Explicit is better than implicit.
            MMh. Ok. Dann mach ich das explizit. Aber interessieren würde mich daran noch WARUM das "better" ist. Aber das kann ich auch mal nachlesen.

            ich begrüße es, wenn Du hiernach recherchierst; aber als kurzer Hinweis: Explizite Schreibweise erfordert weitaus weniger Wissen über den Code, und es reduziert Missverständnisse sowie die Zeit, nach der Auflösung derselben zu suchen. Die Warnungen, die in einer (guten) JavaScript-Konsole auftauchen, stehen dort nicht ohne Grund.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hi,

              ich begrüße es, wenn Du hiernach recherchierst; aber als kurzer Hinweis: Explizite Schreibweise erfordert weitaus weniger Wissen über den Code, und es reduziert Missverständnisse sowie die Zeit, nach der Auflösung derselben zu suchen. Die Warnungen, die in einer (guten) JavaScript-Konsole auftauchen, stehen dort nicht ohne Grund.

              ok, das Leuchtet ein. Fehler die durch den falschen Gültigkeitsbereich einer Variablen entstehen, können durchaus schwer zu finden sein. Meine JS-Konsole (FireFox 1.0.7) schweigt sich dazu allerdings aus.
              Außerdem ist mir aufgefallen, das das Weglassen des Wortes "var" bei SelfHTML gar als, naja, "Feature" definiert ist. Nämlich, dass man so innerhalb einer Funktion globale Variablen erstellen kann. Allerdings wird natürlich auch nicht zu dieser Methode geraten.

              Ich habe jedenfalls wieder was dazugelernt und vor Allem meinen Fehler behoben :-)

              Nochmals vielen Dank für die Hilfe
              schöne Grüße
              Axel