Ole: lokal funktioniert, online nicht

Hallo,

ich habe ein Banner-Rotations-Script ein wenig angepasst. Allerdings funktioniert es jetzt nur noch lokal und nicht mehr, wenn ich es online teste.

Hier erstmal das Script:

  
  
var currentBannerId = 0;  
var bannerArray     = new Array();  
var bannerClicked   = false;  
  
addBannerToArray();  
currentBannerId = Math.floor( Math.random() * bannerArray.length );  
displayBanner();  
  
// create new Banner  
function Banner(url, image, ziel) {  
  this.url   = url;  
  this.image = image;  
  this.ziel = ziel;  
}  
  
// add the banner to the bannerArray  
function addBannerToArray() {  
  bannerArray.push(new Banner("http://www.example.de", "mein_bild1.gif", "_blank"));  
  bannerArray.push(new Banner("http://www.example.de", "mein_bild2.gif", ""));  
  bannerArray.push(new Banner("http://www.example.de", "mein_bild3.gif", ""));  
  bannerArray.push(new Banner("http://www.example.de", "mein_bild4.gif", "_blank"));  
  bannerArray.push(new Banner("http://www.example.de", "mein_bild5.gif", ""));  
}  
  
// display all banner from the bannerArray  
function displayBanner() {  
  currentBannerId = (currentBannerId == bannerArray.length-1) ? 0 : currentBannerId + 1;  
  updateBanner();  
  setTimeout('displayBanner()', 15000);  
};  
  
// update the banner with the currentBannerId  
function updateBanner() {  
  
  var innerHTML = "<img border=\"0\" src=\"bilder/" + bannerArray[currentBannerId].image + "\"/>";  
  if (!bannerClicked) {  
    innerHTML = "<a style=\"cursor:pointer;\" id=\"bannerLink\" onclick=\"openLink(" + currentBannerId + ")\">" + innerHTML + "</a>";  
  }  
  document.getElementById("bannerLayer").innerHTML = innerHTML;  
}  
  
// open link behind the banner with the currentBannerId  
function openLink(id) {  
  bannerClicked = true;  
  document.getElementById("bannerLink").onclick = "";  
  if (bannerArray[id].ziel == "_blank") {  
    newAdWindow = window.open(bannerArray[id].url);  
  newAdWindow.focus();  
  }  
  else {  
   window.location = bannerArray[id].url;  
   }  
}  

===========================

Geändert wurde von mir nicht wirklich viel. "Banner()" wurde um "ziel" erweitert und dementsprechend in der Folge auch "addBannerToArray()" um den dritten Parameter erweitert.

Eine größere Änderung gab es in "openLink()". Der "else"-Zweig ist die ursprünglich vorhandene Syntax, der Inhalt des "if()" wurde ergänzt.

Das Script soll Banner/Bilder anzeigen, die alle 15 Sekunden wechseln. Vor der Änderung hat es das auch problemlos getan, jetzt funktioniert es nurnoch, wenn ich das Script lokal aufrufe. Sobald ich es auf den Server schiebe und von dort die entsprechende Seite aufrufe, werden keine Bilder mehr angezeigt.

Warum kann das liegen? Meine Vermutung war, abgesehen davon, dass ich irgendwo nen blöden Schnitzer gebaut habe, dass evtl. irgendwelche Sicherheitsrichtlinien bzgl. Pop-Ups hier greifen und das Script deshalb nicht so arbeitet wie angedacht.

Danke & Gruß
Ole
(8-)>

--
Das Wort Vegetarier kommt aus dem Indianischen und bedeutet: Zu dumm zum Jagen.
  1. Hallo,

    Du solltest erst einmal in die Fehler-Konsole schauen ;-)

    MfG. Christoph

    --
    Wo die Sprache aufhört, fängt die Musik an...
    Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
    Go to this or Go to this
    1. Hi

      Du solltest erst einmal in die Fehler-Konsole schauen ;-)

      Die Fehlerconsole des FF ist leer...keine Fehlermeldung.

      Gruß
      Ole
      (8-)>

      --
      Das Wort Vegetarier kommt aus dem Indianischen und bedeutet: Zu dumm zum Jagen.
  2. Mahlzeit Ole,

    ich habe ein Banner-Rotations-Script ein wenig angepasst. Allerdings funktioniert es jetzt nur noch lokal und nicht mehr, wenn ich es online teste.

    "Funktioniert nicht" funktioniert nicht. Bekommst Du eine Fehlermeldung? Wenn ja: welche? Wenn nein: nutze einen vernünftigen Browser, der Dir entsprechende Fehlermeldungen anzeigt.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo,

      keine Fehlermeldung, weder in der Console des FF noch sonst wo.

      Funktioniert nicht = Bilder werden nicht angezeigt.

      Gruß
      Ole
      (8-)>

      --
      Das Wort Vegetarier kommt aus dem Indianischen und bedeutet: Zu dumm zum Jagen.
  3. Hi,

    addBannerToArray();
    currentBannerId = Math.floor( Math.random() * bannerArray.length );
    displayBanner();

    bist Du sicher, dass Du das Script hier schon starten kannst? HTML komplett geladen?
    Ansonsten vermute ich ein Bildpfad-Problem, denn das wechselweise  Hineinschreiben der Tags/Bilder scheint zu funktionieren.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Hallo Joachim,

      wie ich schon schrieb, lokal funktioniert das Script ohne Probleme. Der Bildpfad ist auch korrekt, das habe ich schon (mehrfach) überprüft.

      Gruß
      Ole
      (8-)>

      --
      Das Wort Vegetarier kommt aus dem Indianischen und bedeutet: Zu dumm zum Jagen.
      1. Hi,

        wie ich schon schrieb, lokal funktioniert das Script ohne Probleme. Der Bildpfad ist auch korrekt, das habe ich schon (mehrfach) überprüft.

        Aber mein Test gibt mir (beschränkt auf 20) wie gewünscht das html aus:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
        <html>
        <head>

        <style type="text/css">
          a {border: 10px solid #000}
          img  {border: 10px solid green}
        </style>
        </head>
        <body>
            <div>
                <script type="text/javascript">
                    var currentBannerId = 0;
                    var bannerArray     = new Array();
                    var bannerClicked   = false;
                    var cnt = 0; // TEST

        addBannerToArray();
                    currentBannerId = Math.floor( Math.random() * bannerArray.length );

        // create new Banner
                    function Banner(url, image, ziel) {
                      this.url   = url;
                      this.image = image;
                      this.ziel = ziel;
                    }
                    // add the banner to the bannerArray
                    function addBannerToArray() {
                      bannerArray.push(new Banner("http://www.example.de", "mein_bild1.gif", "_blank"));
                      bannerArray.push(new Banner("http://www.example.de", "mein_bild2.gif", ""));
                      bannerArray.push(new Banner("http://www.example.de", "mein_bild3.gif", ""));
                      bannerArray.push(new Banner("http://www.example.de", "mein_bild4.gif", "_blank"));
                      bannerArray.push(new Banner("http://www.example.de", "mein_bild5.gif", ""));
                    }

        // display all banner from the bannerArray
                    function displayBanner() {
                      cnt ++;
                      if (cnt > 20) return; //TEST
                      currentBannerId = (currentBannerId == bannerArray.length-1) ? 0 : currentBannerId + 1;
                      updateBanner();
                      setTimeout('displayBanner()', 2000);
                    };

        // update the banner with the currentBannerId
                    function updateBanner() {

        var innerHTML = "<img border="0" src="bilder/" + bannerArray[currentBannerId].image + ""/>";
                      if (!bannerClicked) {
                        innerHTML = "<a style="cursor:pointer;" id="bannerLink" onclick="openLink(" + currentBannerId + ")">" + innerHTML + "</a>";
                      }
                      document.getElementById("bannerLayer").innerHTML = innerHTML;

        body =  document.getElementsByTagName("body")[0];
                      xxx =  innerHTML.replace("<","[");
                      xxx =  xxx.replace(">","]");
                      txt=  document.createTextNode(xxx);
                      br =  document.createElement("br");

        body.appendChild(txt);
                      body.appendChild(br);

        }

        // open link behind the banner with the currentBannerId
                    function openLink(id) {
                      bannerClicked = true;
                      document.getElementById("bannerLink").onclick = "";
                      if (bannerArray[id].ziel == "_blank") {
                        alert("blank: " + bannerArray[id].url);
                        return;
                        newAdWindow = window.open(bannerArray[id].url);
                      newAdWindow.focus();
                      }
                      else {
                        alert("self: " + bannerArray[id].url);
                        return;
                       window.location = bannerArray[id].url;
                       }
                    }
                </script>
            </div>
            <div id="bannerLayer" style="margin:0 0 20px 0">xxx</div>
            <script type="text/javascript">displayBanner();</script>
        </body>
        </html>

        window.location = bannerArray[id].url;

        Die Eigenschaft heisst übrigens: "href"

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
        1. Hi

          Aber mein Test gibt mir (beschränkt auf 20) wie gewünscht das html aus:

          komisch, komisch...aber immerhin ein Indiz, dass ich nicht ganz auf dem Holzweg bin.

          window.location = bannerArray[id].url;
          Die Eigenschaft heisst übrigens: "href"

          Werd ich korrigieren.

          Danke & Gruß
          Ole
          (8-)>

          --
          Das Wort Vegetarier kommt aus dem Indianischen und bedeutet: Zu dumm zum Jagen.
  4. function updateBanner() {

    var innerHTML = "<img border="0" src="bilder/" + bannerArray[currentBannerId].image + ""/>";

    Bau hier mal onload="alert('bild geladen!');" und onerror="alert('bild nicht geladen!' + this.src);" dann siehst du wahrscheinlich warum die Bilder nicht geladen werden.

    Struppi.