Mark Oliver: Zwei Scripts in einer externen Datei lauffähig vereinen

Ich habe zwei Javascripts. Beide laufen einzeln prima. Wenn ich allerdings die beiden Scripts in einem HTML Dokument ausführen möchte, geht nur einer von beiden. Dabei ist es egal, ob ich einen Script innerhalb der HTML-Site ausführe und denn anderen extern.

Vielleicht kann mir einer eine(!) lauffähige, externe Datei basteln, mit welcher beide Scripts angesprochen werden (wie gesagt, alleine funktionieren beide - sowohl in den aktuellen Versionen von NS als auch IE)

Hier nun das erste Script (Static Logo bzw. Watermark):

//edit the below 5 steps

// 1) substitute 116 and 42 with the width and height of your logo image, respectively
var logowidth=94
var logoheight=12
var logoimage=new Image(logowidth,logoheight)

// 2) change the image path to reflect the path of your logo image
logoimage.src="logo.gif"

// 3) Change url below to the target URL of the logo
var logolink="http://www.website.de"

// 4) change the alttext variable to reflect the text used for the "alt" attribute of the image tag
var alttext="Home"

// 5) Finally, below variable determines the duration the logo should be visible after loading, in seconds. If you'd like the logo to appear for 20 seconds, for example, enter 20. Entering a value of 0 causes the logo to be perpectually visible.
var visibleduration=0

// Optional parameters
var Hoffset=10 //Enter logo's offset from right edge of window (edit only if you don't like the default offset)
var Voffset=10 //Enter logo's offset from bottom edge of window (edit only if you don't like the default offset)

///////////////////////////Do not edit below this line/////////////////////////

var ie=document.all&&navigator.userAgent.indexOf("Opera")==-1

var watermark_obj=ie? document.all.watermarklogo : document.getElementById? document.getElementById("watermarklogo") : document.watermarklogo

function insertimage(){
if (ie||document.getElementById)
watermark_obj.innerHTML='<a href="'+logolink+'"><img src="'+logoimage.src+'" width="'+logowidth+'" height="'+logoheight+'" border=0 alt="'+alttext+'"></a>'
else if (document.layers){
watermark_obj.document.write('<a href="'+logolink+'"><img src="'+logoimage.src+'" width="'+logowidth+'" height="'+logoheight+'" border=0 alt="'+alttext+'"></a>')
watermark_obj.document.close()
}
}

function positionit(){
var dsocleft=ie? document.body.scrollLeft : pageXOffset
var dsoctop=ie? document.body.scrollTop : pageYOffset
var window_width=ie? document.body.clientWidth : window.innerWidth-20
var window_height=ie? document.body.clientHeight : window.innerHeight

if (ie||document.getElementById){
watermark_obj.style.left=parseInt(dsocleft)+parseInt(window_width)-logowidth-Hoffset
watermark_obj.style.top=parseInt(dsoctop)+parseInt(window_height)-logoheight-Voffset
}
else if (document.layers){
watermark_obj.left=dsocleft+window_width-Hoffset-logowidth
watermark_obj.top=dsoctop+window_height-logoheight-Voffset
}
}

function hidewatermark(){
if (document.layers)
watermark_obj.visibility="hide"
else
watermark_obj.style.visibility="hidden"
clearInterval(watermarkinterval)
}

function beingwatermark(){
insertimage()
watermarkinterval=setInterval("positionit()",50)
if (visibleduration!=0)
setTimeout("hidewatermark()",visibleduration*1000)
}

if (ie||document.getElementById||document.layers)
window.onload=beingwatermark

In der HTML-Datei wird dieses Javascript durch: <script src="staticlogo.js"></script> angesprochen. Nun zum zweiten Script (er "titled" alle Links mit dem gleichen Hinweistext, wenn sich die Maus über diesen befindet):

function set_a_titles() {
 if(document.getElementsByTagName) {
   for(var i = 0; i < document.getElementsByTagName("a").length; i++)
     document.getElementsByTagName("a")[i].title = "Linkfehler? Einfach vorgelagertes Warndreieck anklicken und eMail absenden!";
 }
}

Ausgeführt wird dieses Script in der HTML-Datei durch den Event-Handler im Body-Tag: <body onLoad="set_a_titles()">

Falls es eine andere Lösung gibt (die hoffentlich ähnlich einfach ist), bin ich dafür natürlich auch dankbar. Eine externe JS-Datei wäre allerdings wirklich erstrebenswert für mich!

Ich hoffe, mir kann geholfen werden ;)

Gruß

Mark

  1. Hallo,

    Ich habe zwei Javascripts. Beide laufen einzeln prima. Wenn ich allerdings die beiden Scripts in einem HTML Dokument ausführen möchte, geht nur einer von beiden. Dabei ist es egal, ob ich einen Script innerhalb der HTML-Site ausführe und denn anderen extern.

    Man kann einen script nicht "extern" ausführen. Man gibt ein ziel an und der script wird in dei html datei integrieert. du musst den fehler wo anders suchen, daran kann's nicht liegen. vielleicht wird das eine script vor dem anderen ausgeführt, dass varibalen, oder html elemente nciht exestieren, oder die variablen sich überschneiden.

    Vielleicht kann mir einer eine(!) lauffähige, externe Datei basteln, mit welcher beide Scripts angesprochen werden (wie gesagt, alleine funktionieren beide - sowohl in den aktuellen Versionen von NS als auch IE)

    Hier nun das erste Script (Static Logo bzw. Watermark):

    //edit the below 5 steps

    // 1) substitute 116 and 42 with the width and height of your logo image, respectively
    var logowidth=94
    var logoheight=12
    var logoimage=new Image(logowidth,logoheight)

    // 2) change the image path to reflect the path of your logo image
    logoimage.src="logo.gif"

    // 3) Change url below to the target URL of the logo
    var logolink="http://www.website.de"

    // 4) change the alttext variable to reflect the text used for the "alt" attribute of the image tag
    var alttext="Home"

    // 5) Finally, below variable determines the duration the logo should be visible after loading, in seconds. If you'd like the logo to appear for 20 seconds, for example, enter 20. Entering a value of 0 causes the logo to be perpectually visible.
    var visibleduration=0

    // Optional parameters
    var Hoffset=10 //Enter logo's offset from right edge of window (edit only if you don't like the default offset)
    var Voffset=10 //Enter logo's offset from bottom edge of window (edit only if you don't like the default offset)

    ///////////////////////////Do not edit below this line/////////////////////////

    var ie=document.all&&navigator.userAgent.indexOf("Opera")==-1

    var watermark_obj=ie? document.all.watermarklogo : document.getElementById? document.getElementById("watermarklogo") : document.watermarklogo

    function insertimage(){
    if (ie||document.getElementById)
    watermark_obj.innerHTML='<a href="'+logolink+'"><img src="'+logoimage.src+'" width="'+logowidth+'" height="'+logoheight+'" border=0 alt="'+alttext+'"></a>'
    else if (document.layers){
    watermark_obj.document.write('<a href="'+logolink+'"><img src="'+logoimage.src+'" width="'+logowidth+'" height="'+logoheight+'" border=0 alt="'+alttext+'"></a>')
    watermark_obj.document.close()
    }
    }

    function positionit(){
    var dsocleft=ie? document.body.scrollLeft : pageXOffset
    var dsoctop=ie? document.body.scrollTop : pageYOffset
    var window_width=ie? document.body.clientWidth : window.innerWidth-20
    var window_height=ie? document.body.clientHeight : window.innerHeight

    if (ie||document.getElementById){
    watermark_obj.style.left=parseInt(dsocleft)+parseInt(window_width)-logowidth-Hoffset
    watermark_obj.style.top=parseInt(dsoctop)+parseInt(window_height)-logoheight-Voffset
    }
    else if (document.layers){
    watermark_obj.left=dsocleft+window_width-Hoffset-logowidth
    watermark_obj.top=dsoctop+window_height-logoheight-Voffset
    }
    }

    function hidewatermark(){
    if (document.layers)
    watermark_obj.visibility="hide"
    else
    watermark_obj.style.visibility="hidden"
    clearInterval(watermarkinterval)
    }

    function beingwatermark(){
    insertimage()
    watermarkinterval=setInterval("positionit()",50)
    if (visibleduration!=0)
    setTimeout("hidewatermark()",visibleduration*1000)
    }

    if (ie||document.getElementById||document.layers)
    window.onload=beingwatermark

    In der HTML-Datei wird dieses Javascript durch: <script src="staticlogo.js"></script> angesprochen. Nun zum zweiten Script

    Da muss(?) ein type="text/javascript" rein, kuck aml ob's dann funktioniert.

    (er "titled" alle Links mit dem gleichen Hinweistext, wenn sich die Maus über diesen befindet):

    function set_a_titles() {
     if(document.getElementsByTagName) {
       for(var i = 0; i < document.getElementsByTagName("a").length; i++)
         document.getElementsByTagName("a")[i].title = "Linkfehler? Einfach vorgelagertes Warndreieck anklicken und eMail absenden!";
     }
    }

    Ausgeführt wird dieses Script in der HTML-Datei durch den Event-Handler im Body-Tag: <body onLoad="set_a_titles()">

    Grüße aus Düsseldorf,

    --
    Aleksej
  2. Hallo Mark,

    1. Du hättest den Thread weiter unten fortsetzten sollen.

    2. Für das nächste Mal: du solltest am besten einen Link auf eine Seite posten, wo man das Problem sehen kann.

    3. Ich habe dir eine Seite onlinegestellt, wo dein Script funktioniert http://www.meta-text.net/test/zweiscripts.html
      der Script leigt unter http://www.meta-text.net/test/zweiscripts.js

    4. Das Problem ist bzw. war, dass du - so vermute ich - dein watermark-Script in der Seite selbst (also nicht im head) legen musst. Der link-Script muss aber schon geladen sein, wenn die Seite geladen ist. Wenn du beide in einem Scrip haben willst kann du das so machen wie in der Bsp. Seite (<a onMouseover="set_a_link()" ...>

    Grüße
    Thomas

    1. Hallo Thomas!

      Zunächst vielen Dank für Deine Mühe! Deine Tipps werde ich beim nächsten Mal beherzigen.

      Was das Problem angeht, bin ich bald vor der völligen Aufgabe. Auf Deiner zur Verfügung gestellten Testsite (http://www.meta-text.net/test/zweiscripts.html) kann ich weder mit Mozilla 1.0 noch mit IE6 ein Logo (laut Quelltext der js. Datei: meta-bg1.jpg) sehen. Die Links hingegen sind "getitled", wie es gedacht war. Aus irgendwelchen Gründen, will beides zusammen (zumindest bei mir) nicht funktionieren ;-/

      Mir vergeht bald wirklich die Lust an der Sache. Hänge jetzt schon seit Tagen dbzgl. vorm Rechner ohne etwas erreicht zu haben.

      Trotzdem nochmals vielen Dank für die Mühe!

      Gruß

      Mark-Oliver

    2. Hi Thomas!

      Habe nun doch die Grafik-Datei "meta-bg1.jpg" auf Deiner Testsite "gefunden". Sie wird allerdings einfach als ganz normale Grafik (oben links) angezeigt und scrollt nicht mit. Es handelt sich also nicht um ein "static logo".

      *seufz*

      Wünsche eine gute Nacht! Werde mal mein Horoskop für morgen lesen ;)

      Gruß

      Mark-Oliver