- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Incompatibilità tra javascritp
-
Incompatibilità tra javascritp
Ciao a tutti...
premetto che son abbastanza ignorante di questi linguaggi di programmazione ma la passione e la voglia mi anima ad andare avanti...
cosi realizzando il mio sito, avevo bisogno di far ruotare un banner lincabile (cioè 2 immagini lincate a 2 siti diversi, che ruotano ogni 10 secondi).
Bene, questo JS mi da un problema anomalo, praticamente quando lo eseguo sulla mia pagina index, in una frazione di tempo che visualizzo la pagina subito mi ributta su una pagina bianca con questo banner che inizia a ruotare.
Facendo un po di prove in lungo e in largo, ho notato che se tolgo il JS che mi carico un immagine di sfondo, il fenomeno su elencato non si verifica.STRANO...Allora lo sfondo lo carico cosi :
[html]<body onload="fixedBackground('sfondo.jpg');">[/html]con IL JS:
[html]
var backgroundset=false; function fixedBackground(url) { if(!backgroundset) { document.body.style.overflow = 'hidden'; document.body.style.padding = '0px'; document.body.style.margin = '0px'; var overlay = document.createElement('DIV'); overlay.style.position = 'absolute'; overlay.style.top = '0px'; overlay.style.left = '0px'; overlay.style.height = '100%'; overlay.style.width = '100%'; overlay.style.overflow = 'auto'; overlay.innerHTML = document.body.innerHTML; document.body.innerHTML = '<img id="background" height="100%" width="100%" src="' + url + '" style="left: 0; bottom: 0; right: 0; top: 0; z-index: 0" />'; document.body.appendChild(overlay); backgroundset=true; } else background.src=url; }[/html]Mentre il banenr ruotante ha il seguente JS:[html]
function Banner(refreshTime, width, height, altText, start, random){
this.objName = "bannerAd" + (Banner.count++);
eval(this.objName + "=this");
if (!refreshTime) this.refreshTime = 5000; else this.refreshTime = refreshTime*1000;
if (!width) this.width = 180; else this.width = width;
if (!height) this.height = 150; else this.height = height;
if (random == null) this.random = 1; else this.random = random;
this.altText = altText;
this.ads = [];
if (start) this.currentAd = start-1; else start = null;
this.mySize = 0;this.Ad = function(src, href, target, mouseover) { var tempImage = new Image(); tempImage.src = src; this.ads[this.mySize] = new Object(); var ad = this.ads[this.mySize]; ad.src = src; if (typeof(target) == "undefined" || target == null) ad.target = "_self"; else ad.target = target; ad.href = href; ad.mouseover = mouseover; this.mySize++; } this.link = function(){ var ad = this.ads[this.currentAd]; if (ad.target == "_self"){ location.href = ad.href; } else if (ad.target == "_blank" || ad.target == "_new"){ open(ad.href,this.objName + "Win"); } else top.frames[ad.target].location.href = ad.href; } this.showStatus = function(){ var ad = this.ads[this.currentAd]; if (ad.mouseover) status = ad.mouseover; else status = ad.href; } this.randomAd = function(){ var n; do { n = Math.floor(Math.random() * (this.mySize)); } while(n == this.currentAd); this.currentAd = n; } this.output = function(){ var tempCode = ""; if (this.mySize > 1){ if (this.currentAd == null) this.randomAd(); if (this.currentAd >= this.mySize) this.currentAd = this.mySize - 1; tempCode = '<a href="javascript:'+this.objName+'.link();"'; tempCode += ' onMouseOver="' + this.objName + '.showStatus(); return true"'; tempCode += ' onMouseOut="status=\'\';return true">'; tempCode += '<img src="' + this.ads[this.currentAd].src + '" width="' + this.width; tempCode += '" name="' + this.objName + 'Img" height="' + this.height + '" '; if (this.altText) tempCode += 'alt="'+this.altText + '" '; tempCode += 'border="0" /></a>'; document.write(tempCode); this.nextAd(); } else document.write("Error: two banners must be defined for the script to work."); } this.newAd = function(){ if (!this.random){ this.currentAd++; if (this.currentAd >= this.mySize) this.currentAd = 0; } else { this.randomAd(); } this.nextAd(); } this.nextAd = function(){ document.images[this.objName+ 'Img'].src = this.ads[this.currentAd].src; setTimeout(this.objName+'.newAd()',this.refreshTime) }
}
Banner.count = 0;[/html]e lo richiamo cosi :
[html]
<script type="text/javascript">
myAd = new Banner( 3, 180, 150, "Clicca", 1, 0 );
myAd.Ad( "ban1.gif", "google.it", null, "Ciao!" );
myAd.Ad( "ban2.gif", "ciao.it", null, "Testo" );
myAd.output();</script>[/html]Come è possibile che son incompatibili 2 js?Anche perche quello script per il banner rotante mi serve per altri 7 spazi illustrativi di foto...
Qualcuno ha avuto la mia stessa "dis-avventura"?
-
Ciao Mimmo82,
a me funziona. Vedo lo sfondo ed i banner che girano.
Per cercare di replicare l'errore ho creato questa pagina (ho modificato il nome delle immagini):
[HTML]
<html>
<head>
<script type="text/javascript">
var backgroundset=false; function fixedBackground(url) { if(!backgroundset) { document.body.style.overflow = 'hidden'; document.body.style.padding = '0px'; document.body.style.margin = '0px'; var overlay = document.createElement('DIV'); overlay.style.position = 'absolute'; overlay.style.top = '0px'; overlay.style.left = '0px'; overlay.style.height = '100%'; overlay.style.width = '100%'; overlay.style.overflow = 'auto'; overlay.innerHTML = document.body.innerHTML; document.body.innerHTML = '<img id="background" height="100%" width="100%" src="' + url + '" style="left: 0; bottom: 0; right: 0; top: 0; z-index: 0" />'; document.body.appendChild(overlay); backgroundset=true; } else background.src=url; }function Banner(refreshTime, width, height, altText, start, random){
this.objName = "bannerAd" + (Banner.count++);
eval(this.objName + "=this");
if (!refreshTime) this.refreshTime = 5000; else this.refreshTime = refreshTime*1000;
if (!width) this.width = 180; else this.width = width;
if (!height) this.height = 150; else this.height = height;
if (random == null) this.random = 1; else this.random = random;
this.altText = altText;
this.ads = [];
if (start) this.currentAd = start-1; else start = null;
this.mySize = 0;this.Ad = function(src, href, target, mouseover) { var tempImage = new Image(); tempImage.src = src; this.ads[this.mySize] = new Object(); var ad = this.ads[this.mySize]; ad.src = src; if (typeof(target) == "undefined" || target == null) ad.target = "_self"; else ad.target = target; ad.href = href; ad.mouseover = mouseover; this.mySize++; } this.link = function(){ var ad = this.ads[this.currentAd]; if (ad.target == "_self"){ location.href = ad.href; } else if (ad.target == "_blank" || ad.target == "_new"){ open(ad.href,this.objName + "Win"); } else top.frames[ad.target].location.href = ad.href; } this.showStatus = function(){ var ad = this.ads[this.currentAd]; if (ad.mouseover) status = ad.mouseover; else status = ad.href; } this.randomAd = function(){ var n; do { n = Math.floor(Math.random() * (this.mySize)); } while(n == this.currentAd); this.currentAd = n; } this.output = function(){ var tempCode = ""; if (this.mySize > 1){ if (this.currentAd == null) this.randomAd(); if (this.currentAd >= this.mySize) this.currentAd = this.mySize - 1; tempCode = '<a href="javascript:'+this.objName+'.link();"'; tempCode += ' onMouseOver="' + this.objName + '.showStatus(); return true"'; tempCode += ' onMouseOut="status=\'\';return true">'; tempCode += '<img src="' + this.ads[this.currentAd].src + '" width="' + this.width; tempCode += '" name="' + this.objName + 'Img" height="' + this.height + '" '; if (this.altText) tempCode += 'alt="'+this.altText + '" '; tempCode += 'border="0" /></a>'; document.write(tempCode); this.nextAd(); } else document.write("Error: two banners must be defined for the script to work."); } this.newAd = function(){ if (!this.random){ this.currentAd++; if (this.currentAd >= this.mySize) this.currentAd = 0; } else { this.randomAd(); } this.nextAd(); } this.nextAd = function(){ document.images[this.objName+ 'Img'].src = this.ads[this.currentAd].src; setTimeout(this.objName+'.newAd()',this.refreshTime) }
}
Banner.count = 0;
</script>
<script type="text/javascript">
myAd = new Banner( 3, 180, 150, "Clicca", 1, 0 );
myAd.Ad( "down.png", "google.it", null, "Ciao!" );
myAd.Ad( "up.png", "ciao.it", null, "Testo" );
myAd.output();</script>
</head>
<body onload="fixedBackground('sfondo.jpg');"></body>
</html>
[/HTML]