Papellucho: Variabler .JS Pfad

Hallo zusammen,
ich arbeite grade an einem kleinen Projekt, und wollte Fragen ob es möglich ist im <Head>-Bereich
einem Script-Tag eine variable Pfadangabe zu machen also so in der Art:
Hab zwar schon paar Ideen ausprobiert, aber nichts davon hat funktioniert. :/

  
<head>  
//entweder so//  
<script>  
variablerName = UrlParameter + ".js"  
</script>  
<script src=variablerName type="text/javascript">  
  
// oder so//  
  
document.innerHTML = '<script src="' + variablerName + '" type="text/javascript"></script>'  
  
</head>  

  1. Meine Herren!

    ich arbeite grade an einem kleinen Projekt, und wollte Fragen ob es möglich ist im <Head>-Bereich
    einem Script-Tag eine variable Pfadangabe zu machen also so in der Art:
    Hab zwar schon paar Ideen ausprobiert, aber nichts davon hat funktioniert. :/

    Etwa so?

    <script>  
    var url;  
    // Etwas Magie, die url mit einem sinnvollen Wert füllt.  
    document.write('<script src="' + url + "'></script>');  
    </script>
    

    Beachte: Das funktioniert nur, wenn das Skript schon beim Seitenaufbau eingebunden werden soll, also bevor das DOMContentLoaded-Ereignis und insbesondere bevor das window.onload-Ereignis ausgelöst wurde. Willst du das zu einem späteren Zeitpunkt, darfst du nicht document.write verwenden.

    Stichwort Magie: Wieso ist die Skript-URL generisch? Woher stammt sie? Ist sie dem Server nicht schon beim Zusammenbauen der Seite bekannt, also könntest du nicht etwa sowas machen:

    <?php echo "<script src=\"$url\"></script>"; ?>

    --
    “All right, then, I'll go to hell.” – Huck Finn
    1. Etwa so?

      <script>

      var url;
      document.write('<script src="' + url + "'></script>');
      </script>

      
      >   
        
      fast genau so (nur mit .js endung ;-)) hab ich es ja auch geschrieben, aber es funktioniert nicht.  
      Ich möchte eine Seite haben an die ich, wenn ich über die URL weitere Parameter anhänge verschiedene Inhalte(mit anderen Bildern und Funktionen) darstellen lassen, um nicht immer alle Pfade dauerhaft verlinkt zu lassen. Mit Bildern funktioniert auch alles ohne Probleme.  
        
      Mit PHP kenne ich mich noch nicht aus, aber wenn ich es damit gelöst bekomme, lerne ich es ab sofort. :-)  
      
      > `<?php echo "<script src=\"$url\"></script>"; ?>`{:.language-php}  
      >   
      
      @hotti  
      ich kenne diese Art von Code nicht, aber was du beschreibst kommt meine Idee schon nah, glaube ich.  
        <script src="%js\_src%"></script>  
      wie kann man für %js\_src% einen neuen Wert setzen?  
        
      PS: bis jetzt konnte ich alle meine Ideen umsetzen ;-)
      
      1. Hallo,

        var url;
        document.write('<script src="' + url + "'></script>');

        fast genau so (nur mit .js endung ;-)) hab ich es ja auch geschrieben, aber es funktioniert nicht.

        Und warum nicht? Bitte eine genaue Fehlerbeschreibung, sonst können wir dir schwer helfen.

        Ich möchte eine Seite haben an die ich, wenn ich über die URL weitere Parameter anhänge verschiedene Inhalte(mit anderen Bildern und Funktionen) darstellen lassen

        Okay, was ist nun das Problem? Wobei hapert es?

        Grüße
        Mathias

        1. Hallo nochmals,

          Habe es grade nochmals ausprobiert da ich nicht sicher war, ob ich mich nicht vertippt hab, aber das Ergebnis ist dasselbe:

            
          <script type="text/javascript">  
          	var link1 = "data_a.js";  
          	document.write('<script src="' + link1 + '"></script>');  
          </script>  
          
          

          Chrome wirft mir als Fehlercode "Unexpected Illegal Token" vor.

          Bei Firefox heißt es "unterminated string literal"

          Es hapert halt daran, dass ich es nicht zum funktionieren kriege, obwohl es anscheinend so einfach ist :(

          Wenn ich die 2 Zeilen herausnehme, funktioniert es wieder normal..

          Danke für eure Hilfe bis hierhin

          1. Hallo,

            <script type="text/javascript">
            var link1 = "data_a.js";
            document.write('<script src="' + link1 + '"></script>');
            </script>
            [/code]

            Ein script-Element kann andere HTML-Tags enthalten. Der HTML-Parser sieht diese nicht als HTML-Code, sondern als JavaScript-Code an. </script> allerdings beendet das script-Element sofort. Damit er das nicht tun, musst du den String </script> irgendwie maskieren, damit ihn der HTML-Parser nicht mehr als solchen erkennt.

            Möglich wären z.B.

            document.write('<script src="' + link1 + '"></script>');

            document.write('<script src="' + link1 + '"><' + '/script>');

            Mathias

          2. Hallo,

            <script type="text/javascript">
            var link1 = "data_a.js";
            document.write('<script src="' + link1 + '"></script>');
            </script>

              
            Du schaffst es also irgendwie das  
              
            var link1 = "data\_a.js";  
              
            in deine Ausgabe(HTML) zu bekommen, richtig? Das muss ja wohl serverseitig dynamisch geschehen.  
            Und was hindert dich daran, gleich ein Script Element zu erzeugen, indem die src korekt eingetragen ist? Warum der Umweg über die Variable?  
              
            Viele Grüße  
            Siri
            
            1. So, ich bin es nochmal,

              in deine Ausgabe(HTML) zu bekommen, richtig? Das muss ja wohl serverseitig dynamisch geschehen.
              Und was hindert dich daran, gleich ein Script Element zu erzeugen, indem die src korekt eingetragen ist? Warum der Umweg über die Variable?

              Weil ich mehrere Verschiedene .js dateien habe, und ich nicht möchte, dass alle Sofort eingebunden werden, sondern nur wenn und falls Sie gebraucht werden.

              @molily
              danke, es hat geklappt. Mein Fehler war es den Script-Tag zu schließen, bevor er es sollte. :-)

              Danke, an alle für Eure Hilfe.

              1. Weil ich mehrere Verschiedene .js dateien habe, und ich nicht möchte, dass alle Sofort eingebunden werden, sondern nur wenn und falls Sie gebraucht werden.

                Wenn du aber eh wieder zum Server gehst und über die Parameter der URL die Seite neu lädst und damit das benötigte JS bestimmst, dann kannst du es doch in der Ausgabe gleich korrekt eintragen. Oder versteh ich hier was komplett falsch?! Ansonsten wäre es ja clientseitig dynamisches einbinden und das kann mit document.write nicht funktionieren.

  2. Hab zwar schon paar Ideen ausprobiert, aber nichts davon hat funktioniert. :/

    Ideen nützen Dir nur, wenn Du sie umsetzen kannst.

    Idee: Maschinenlesbare Projektverwaltung, konfigurierbare Attribute für die URLs, dem jeweiligen URL zugeordnete JS-SRCs und dann das HTML über ein Template ausliefern, da werden die JS-SRCs über die Platzhalter eingesetzt.

    %loop_js_src%  
     <script src="%js_src%"></script>  
    %endloop%