lokal funktioniert, online nicht
Ole
- javascript
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.
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-)>
Hallo,
Du solltest erst einmal in die Fehler-Konsole schauen ;-)
MfG. Christoph
Hi
Du solltest erst einmal in die Fehler-Konsole schauen ;-)
Die Fehlerconsole des FF ist leer...keine Fehlermeldung.
Gruß
Ole
(8-)>
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
Hallo,
keine Fehlermeldung, weder in der Console des FF noch sonst wo.
Funktioniert nicht = Bilder werden nicht angezeigt.
Gruß
Ole
(8-)>
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
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-)>
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
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-)>
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.