tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Quaese
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1513
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Nov 2002
    Beiträge
    983
    Hallo allerseits,

    ich arbeite zur Zeit an einem Tool, mit dem sich "Widgets" erstellen lassen. Ergebnis des Erstellens soll eine Javascript-Datei sein, die der Benutzer dann in seiner Seite einbinden kann.
    Ich müsste allerdings ein paar Werte an diese JS-Datei übergeben, um Einstellungen vornehmen zu können.
    Ist folgendes möglich:
    HTML-Code:
    <script type="text/javascript" src=test.js?parameter1=xy"></script>
    Wie kann ich dann innerhalb der Javascript-Datei auf den Parameter "parameter1" zugreifen?

    Vielen Dank!
     
    Signatur nicht verfügbar.

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin Moritz,

    das eingebundene JS-File stellt ja aus DOM-Sicht ein Element wie jedes andere dar.
    Als Solches kannst du auf seine Attribute (also src in dem Fall) zugreifen, und aus der ermittelten URL mit String-Methoden die gewünschten Infos extrahieren.
    Am besten gibst du dem <script> eine ID und greifst anhand dieser darauf zu, das erspart dir umständliches Gewurschtel, um das richtige <script> aus dem Dokument zu Fischen....du solltest da aber optimalerweise in der Dokumentation darauf hinweisen, dass diese ID bitte für das Skript reserviert ist
     

  3. #3
    Registriert seit
    Nov 2002
    Beiträge
    983
    Hallo Sven,

    vielen Dank für deine Antwort. Wenn ich sie richtig verstanden habe, bin ich mir nicht sicher, ob sie mein Problem lösen:
    Ich möchte ja innerhalb der test.js auf den Parameter 'parameter1' zugreifen. Ein weiteres Problem, welches sich heute morgen ergeben hat,
    ist, dass unter Umständen eine weitere Anzahl unbekannter Parameter hinzukommen können, weswegen das Parsen der URL denke ich die
    bequemste und flexibelste Variante darstellt. Könntest Du mir evtl ein Beispiel für deinen Lösungsansatz geben?

    Ich habe zwischenzeitlich überlegt, den Code wie folgt auszuliefern:
    HTML-Code:
    <script type="text/javascript">var param1 = "TEST!";</script>
    <script type="text/javascript" src=test.js"></script>
    Und dann in der test.js einfach auf die Variable 'param1' zuzugeifen.
     
    Signatur nicht verfügbar.

  4. #4
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    Svens Antwort löst dein Problem.

    Eine mögliche Implementierung könnte wie folgt aussehen:

    test.js
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    // Bisherige onload-Funktionalität
    var fnLoad = window.onload;
     
    window.onload = function(){
      // Bisherige onload-Funktionalität aufrufen
      fnLoad();
     
      // Script ermitteln
      var objScript = document.getElementById("script_id");
      var strSrc = objScript.src;
      strSrc = strSrc.substring(strSrc.indexOf("?")+1, strSrc.length);
     
      // Parameter splitten
      var arrHlp = strSrc.split("&");
      var GET = [];
     
      // Parameter durchlaufen
      for(var strEntry in arrHlp){
        // Parameter in Name und Wert splitten und in GET-Array schreiben
        var arrH = arrHlp[strEntry].split("=");
        GET[arrH[0]] = arrH[1];
      }
     
      // TEST: Ausgabe des GET-Arrays
      var strOut = "";
      for(var strEntry in GET){
        strOut += "GET['"+strEntry+"'] = " + GET[strEntry] + "\n";
      }
      alert(strOut);
    }

    Der Scripttag wird wie gewohnt ins Dokument eingebunden und - wie bereits von Sven erwähnt - mit einer ID versehen (hier: script_id).
    Code :
    1
    
    <script id="script_id" src="test.js?param1=p1&param2=p2" type="text/javascript"></script>

    Ciao
    Quaese
    Sven Mintel bedankt sich. 
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  5. #5
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ist übrigens nicht meine Idee

    Ich weiss nur, das bei scriptaculous ähnlich verfahren wird beim Laden der benötigten Bibliotheken, und hab gestern mal nachgeschaut, was sie da genau machen.
    Dass es sich um ein simples parsen der URL handelt, hatte mich dabei allerdings etwas enttäuscht, ich hatte gehofft, ein Wunderelexier zu Finden

    Wie man es angehen kann, hat ja Quaese schon geschrieben, aber noch eine Anmerkung zu deiner Idee mit der Variablen.
    Ich würde davon abraten.
    Sobald du mit deiner Sache globale Variablen verwendest, sind Probleme garantiert.

    Du kannst nie wissen, was für Skripte der Nutzer noch verwendet.
    Mein Vorschlag daher: deine eigene Anwendung konzipiere von Anfang an als ein einziges Objekt, und das mit möglichst variablem Instanznamen.

    So gehst du Kompatibilitätsproblemen aus dem Weg, weil alles, was über dies Objekt läuft, von anderen Skripten auf der Seite nicht zufällig/ungewollt beeinflusst wird(und umgekehrt). Der variable Name für dies Objekt ermöglicht dem Nutzer, falls es doch mal zu Namenskonflikten kommen sollte, durch eine kleine Änderung diesen Zustand zu Ändern.

    jQuery macht das zum Beispiel so.
     

  6. #6
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    @Sven:
    [WORTKLAUBEREI]
    Aber deine Antwort hat zur Lösung beigetragen, weil ich sie bei der Lösung als Grundlage genommen habe
    [/WORTKLAUBEREI]

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 15.07.10, 16:48
  2. In Batch-datei Parameter übergeben
    Von Angelika_25 im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 13.02.09, 10:07
  3. externe Parameter an Applet weitergeben
    Von sportingt im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 21.10.05, 10:03
  4. Antworten: 4
    Letzter Beitrag: 22.02.05, 22:02
  5. Externe Dateien mit Parameter laden
    Von TTP im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 01.06.04, 19:58