Cherche l'aide d'un programmeur Javascript
lio
-
lio -
lio -
Bonjour à tous, voila j'ai un problème avec un javascript. le script affiche une pub qui suit l'ascensseur du navigateur, or si on clique sur l'ascensseur avant que la pub soit totalement affichée, une erreur java se produit, "document...." à la valeur null. le bug se produit sur ie6, mais pas sur ie5.5, ns6, etc...
( http://www.lc-informatique.com/ , cliquer sur l'assenceur dès qu'il est visible pour tester le bug)
voila un bout du script qui à mon avis bug:
var smoothNess = 0.08;
// Détection navigateur
DOM = (document.getElementById) ? true : false;
NS4 = (document.layers) ? true : false;
IE = (document.all) ? true : false;
NS6 = DOM && !NS4 && !IE;
// Dernière position Y du layer
lastScrollY = 0;
valSUP = false;
valINF = true;
// La gestion du layer
function heartBeat() {
if(IE) { diffY = document.body.scrollTop; }
else if(NS4 || NS6) { diffY = self.pageYOffset; }
if(valSUP && diffY<90) { valINF = true; valSUP = false; }
if(valINF && diffY>90) { valSUP = true; valINF = false; }
if(valSUP) { diffY = diffY-0; }
if(diffY != lastScrollY) {
percent = smoothNess * (diffY - lastScrollY);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent);
if(IE) document.all.dmenud.style.pixelTop += percent;
if(IE) document.all.dmenud2.style.pixelTop += percent;
if(NS4) document.dmenud.top += percent;
if(NS4) document.dmenud2.top += percent;
if(NS6) document.getElementById("dmenud").style.top = parseInt(document.getElementById("dmenud").style.top) + percent;
if(NS6) document.getElementById("dmenud2").style.top = parseInt(document.getElementById("dmenud2").style.top) + percent;
lastScrollY += percent;
}
}
( http://www.lc-informatique.com/ , cliquer sur l'assenceur dès qu'il est visible pour tester le bug)
voila un bout du script qui à mon avis bug:
var smoothNess = 0.08;
// Détection navigateur
DOM = (document.getElementById) ? true : false;
NS4 = (document.layers) ? true : false;
IE = (document.all) ? true : false;
NS6 = DOM && !NS4 && !IE;
// Dernière position Y du layer
lastScrollY = 0;
valSUP = false;
valINF = true;
// La gestion du layer
function heartBeat() {
if(IE) { diffY = document.body.scrollTop; }
else if(NS4 || NS6) { diffY = self.pageYOffset; }
if(valSUP && diffY<90) { valINF = true; valSUP = false; }
if(valINF && diffY>90) { valSUP = true; valINF = false; }
if(valSUP) { diffY = diffY-0; }
if(diffY != lastScrollY) {
percent = smoothNess * (diffY - lastScrollY);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent);
if(IE) document.all.dmenud.style.pixelTop += percent;
if(IE) document.all.dmenud2.style.pixelTop += percent;
if(NS4) document.dmenud.top += percent;
if(NS4) document.dmenud2.top += percent;
if(NS6) document.getElementById("dmenud").style.top = parseInt(document.getElementById("dmenud").style.top) + percent;
if(NS6) document.getElementById("dmenud2").style.top = parseInt(document.getElementById("dmenud2").style.top) + percent;
lastScrollY += percent;
}
}
3 réponses
-
IE 6 à des bugs !
Je ne chercherais pas plus loin...
-= Bobinours =- -
salut lio,
J'ai pas lu tout le code ...
Mais tu peux toujours essayer ca :
Ajoute au début de la fonction :
if ((IE) && (!document.all.dmenud)) return;
De cette façon tu sors tant que le layer dmenud n'est pas encore créé.
@+
Philippe
[[ The Truth is Out There ]] -