Mark Oliver: Wie binde ich zwei externe .js Dateien in HTML ein ?

Nach dem Stefan kein Mail-Support mehr betreibt, muß ich diese Frage nun doch im Forum stellen *schäm* ;)

Ich habe mehrere HTML-Dokumente, in denen ich jeweils zwei externe .js Dateien einbinden will. Zu der bereits vorhandenen:

<script src="logo.js"></script>

Möchte ich gerne auch diese noch einbinden:

<script type="text/javascript" src="a_titles.js">

Diese beiden Tags einfach nur untereinander in`s HTML-Dokument zu schreiben ist leider nicht möglich. Ich will aber beide Scripts extern ausführen lassen. Leider schaffe ich es auch nicht (aufgrund doch noch
mangelnder JS-Kenntnisse) die externen JS-Datein zu einer Datei zu verschmelzen. Vielleicht kannt mir hier jemand weiterhelfen? Muß ich überhaupt verschmelzen oder kann ich die beiden externen .js Dateien doch auch irgendwie anders aktivieren? Nun zu den beiden .js Dateien:

Inhalt von "a_titles.js":

function set_a_titles() {
 if(document.getElementsByTagName) {
   for(var i = 0; i < document.getElementsByTagName("a").length;
i++)
     document.getElementsByTagName("a")[i].title = "Dein
Wunschtext";
 }
}

Inhalt von "logo.js":

//Logogroesse max zwischen 135 and 40
if (document.images)
var staticlogo=new Image(108,10)
staticlogo.src="logo.gif"

function regenerate(){
window.location.reload()
}
function regenerate2(){
if (document.layers)
setTimeout("window.onresize=regenerate",400)
}

if (document.all)
document.write('<span id="logo"
style="position:absolute;top:100;width:'+staticlogo.width+';height:'+sta
ticlogo.height+'"></span>')

function createlogo(){
staticimage=new Layer(100)
staticimage.left=-300
staticimage.top=120
staticimage.document.write('<a href="'+logolink+'"
target="_top"><img src="'+staticlogo.src+'" border=0
alt="'+alttext+'"></a>')
staticimage.document.close()
staticimage.visibility="show"
regenerate2()
staticitns()
}

if (document.layers)
window.onload=createlogo;

if (document.all){
w=document.body.clientWidth-logo.style.pixelWidth-11
h=document.body.clientHeight-logo.style.pixelHeight-5
logo.style.left=w
logo.style.top=h
}

function logoit(){
var w2=document.body.scrollLeft+w
var h2=document.body.scrollTop+h
logo.style.left=w2
logo.style.top=h2
}
function logoit2(){
staticimage.left=pageXOffset+window.innerWidth-
staticimage.document.width-15
staticimage.top=pageYOffset+window.innerHeight-
staticimage.document.height
}

function insertimage(){
logo.innerHTML='<a href="'+logolink+'" target="_top" ><img
src="'+staticlogo.src+'" border=0 alt="'+alttext+'"></a>'
}

if (document.all){
window.onscroll=logoit
window.onresize=new Function("window.location.reload()")
window.onload=insertimage
}

function staticitns(){
setInterval("logoit2()",90)
}

  1. Hallo,

    Nach dem Stefan kein Mail-Support mehr betreibt, muß ich diese Frage nun doch im Forum stellen *schäm* ;)

    Tja, aber genau dafür ist das Forum doch da.

    Ich habe mehrere HTML-Dokumente, in denen ich jeweils zwei externe .js Dateien einbinden will. Zu der bereits vorhandenen:

    <script src="logo.js"></script>

    Möchte ich gerne auch diese noch einbinden:

    <script type="text/javascript" src="a_titles.js">

    Diese beiden Tags einfach nur untereinander in`s HTML-Dokument zu schreiben ist leider nicht möglich.

    Warum?
    Du kannst auch 10 solche <script> Elemente im <head>-Bereich haben. Du kannst aber <script> auch irgendwo im <body> Notieren.

    Ich will aber beide Scripts extern ausführen lassen. Leider schaffe ich es auch nicht (aufgrund doch noch

    mangelnder JS-Kenntnisse) die externen JS-Datein zu einer Datei zu verschmelzen.

    An sich muss du nur die Funktion "function set_a_titles() " sprich den Inhalt deiner "a_titles.js" einfach in die andere Datei hineinkopieren.

    Vielleicht kannt mir hier jemand weiterhelfen? Muß ich überhaupt verschmelzen oder kann ich die beiden externen .js Dateien doch auch irgendwie anders aktivieren?

    Du muss sie nicht verschmelzen. Du kannst sie ganz normal einbinden.
    Was meinst mit "aktivieren"? Die Funktionen aufrufen? Das tust du in deiner JS datei selbst: z.B.
    function staticitns(){
    setInterval("logoit2()",90)
    }
    ruft die funktion logoit2() auf, oder an der benötigten Stelle in deiner HTML-Datei. (z.B. <body onLoad="set_a_titles()">)

    Grüße
    Thomas

    1. Hallo Thomas!

      Leider funktioniert es so nicht (siehe angefügten script). Das Logo wird angezeigt, nicht jedoch die Funktion von a_titles.js. Ich möchte die beiden Scripts (bzw. einen zusammengesetzen Script) auf jeden Fall extern halten (xxx.js). Deinem Vorschlag zufolge sieht der Inhalt von "logo.js" dann so aus (unten ist der Script von a_titles.js einfach angefügt):

      //Logogroesse max zwischen 135 and 40
      if (document.images)
      var staticlogo=new Image(108,10)
      staticlogo.src="logo.gif"
      var logolink="http://www.wetterlinks.de"
      var alttext="www.wetterlinks.de - weather with you"

      function regenerate(){
      window.location.reload()
      }
      function regenerate2(){
      if (document.layers)
      setTimeout("window.onresize=regenerate",400)
      }

      if (document.all)
      document.write('<span id="logo" style="position:absolute;top:100;width:'+staticlogo.width+';height:'+staticlogo.height+'"></span>')

      function createlogo(){
      staticimage=new Layer(100)
      staticimage.left=-300
      staticimage.top=120
      staticimage.document.write('<a href="'+logolink+'" target="_top"><img src="'+staticlogo.src+'" border=0 alt="'+alttext+'"></a>')
      staticimage.document.close()
      staticimage.visibility="show"
      regenerate2()
      staticitns()
      }

      if (document.layers)
      window.onload=createlogo;

      if (document.all){
      w=document.body.clientWidth-logo.style.pixelWidth-11
      h=document.body.clientHeight-logo.style.pixelHeight-5
      logo.style.left=w
      logo.style.top=h
      }

      function logoit(){
      var w2=document.body.scrollLeft+w
      var h2=document.body.scrollTop+h
      logo.style.left=w2
      logo.style.top=h2
      }
      function logoit2(){
      staticimage.left=pageXOffset+window.innerWidth-staticimage.document.width-15
      staticimage.top=pageYOffset+window.innerHeight-staticimage.document.height
      }

      function insertimage(){
      logo.innerHTML='<a href="'+logolink+'" target="_top" ><img src="'+staticlogo.src+'" border=0 alt="'+alttext+'"></a>'
      }

      if (document.all){
      window.onscroll=logoit
      window.onresize=new Function("window.location.reload()")
      window.onload=insertimage
      }

      function staticitns(){
      setInterval("logoit2()",90)
      }

      function set_a_titles() {
       if(document.getElementsByTagName) {
         for(var i = 0; i < document.getElementsByTagName("a").length; i++)
           document.getElementsByTagName("a")[i].title = "Dein Wunschtext";
       }
      }

      1. Hallo Mark,

        Leider funktioniert es so nicht (siehe angefügten script). Das Logo wird angezeigt, nicht jedoch die Funktion von a_titles.js.

        Wie gesagt, der logo-Script ruft sich selber auf. Wie hast du die set_a_titles() Funktion aufgerufen?

        Wenn noch gar nicht, dann kannst du es mit <body onLoad="set_a_titles() ;"> aufrufen.

        Ich möchte die beiden Scripts (bzw. einen zusammengesetzen Script) auf jeden Fall extern halten (xxx.js). Deinem Vorschlag zufolge sieht der Inhalt von "logo.js" dann so aus (unten ist der Script von a_titles.js einfach angefügt):

        Die Datei passt ja so.

        Grüße
        Thomas

        1. Hallo Thomas!

          Dennoch komme ich damit nicht vorwärts. Die set_a_titles Funktion sollte per <body onLoad="set_a_titles() ;"> augefrufen werden (dachte ich auch). Ist alles so, wie Du es beschreibst, funzt aber nicht?!

          Beide Funktionenen habe ich jetzt unter logo.js zusammengefaßt (wie im vorherigen Posting gezeigt). logo.js wird im Body durch:

          <script src="logo.js">
          </script>

          aufgerufen.

          Was soll ich machen *verzweifel*. Habe irgendwie den Eindruck, daß die beiden Scripts sich "beißen".

          1. Hallo Mark,

            Dennoch komme ich damit nicht vorwärts. Die set_a_titles Funktion sollte per <body onLoad="set_a_titles();"> augefrufen werden (dachte ich auch). Ist alles so, wie Du es beschreibst, funzt aber nicht?!

            Was soll ich machen *verzweifel*. Habe irgendwie den Eindruck, daß die beiden Scripts sich "beißen".

            Ich habe natürlich nciht überprüft ob deine Scripts auch tatsächlich funktionieren. Beissen können sie sich nicht, da es unterschiedliche Funktionen mit unterschiedlichen Namen sind. Daran liegt es also nicht.

            Hat schon jemals die Funktion "set_a_titles()" funktioniert?
            du kannst es testen:
            function set_a_titles() {
             if(document.getElementsByTagName) {
               for(var i = 0; i < document.getElementsByTagName("a").length; i++)
                 document.getElementsByTagName("a")[i].title = "Dein Wunschtext";
             }
             alert ("Links insgesamt in der Seite:" + document.getElementsByTagName("a").length + " Titel des ersten Links: " + document.getElementsByTagName("a")[1].title);
            }

            Da sollte beim laden ser Seite ein Alert mit der anzahl der Link in der Seite und mit "Dein Wunschtext" ausgeben.
            Nachher kannst du den " alert" löschen.
            Wenn du aber <a ..><img></a> in deine Seite hast funktioniert es mit dem IE nicht, aber mit Mozilla und Opera auch dann.

            Grüße
            Thomas

  2. Auch so funktioniert der script nicht (erst wenn ich <script src="logo.js"></script> aus dem Script entferne, läuft die Funktion set_a_titles):

    <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <SCRIPT Language="JavaScript">
    <!-- Verstecken für alte Browser
    function set_a_titles() {
     if(document.getElementsByTagName) {
       for(var i = 0; i < document.getElementsByTagName("a").length; i++)
         document.getElementsByTagName("a")[i].title = "Dein Wunschtext";
     }
    }
    // Ende Verstecken -->
    </Script>
    </head>

    <body onLoad="set_a_titles()">
    <br>
    <br>
    <a href="http://www.linknachnirgendwo.de">Testlink</a>
    <script src="logo.js">
    </script>
    </body>
    </html>

    Wo liegt der Fehler. Ist vielleicht der Inhalt von logo.js fehlerhaft?? Hilfe!!