Faire qu'Opéra n'interprète pas un script
Le
MIMATA
Bonjour,
J'ai un problème avec un script sur mon site. C'est un loading pendant
le cargement d'une page. Le problème, c'est qu'il plante sous Opéra, IE
AMC et Safari.
Est-il possible d'ajouter une fonction au début du script pour détecter
ces navigateurs et faire en sorte qu'ils ignorent le script ?
Le code se compose de 2 scripts :
Dans le head :
<!--
var ie = document.all?true:false // On test le navigateur pour IE
onload = preloadImage // Appel de la function preloadImage() au
chargement de la page. Peut etre remplacer par <body
onload="preloadImage()">
function addZero(chiffre){ // Function qui ajoute un zero devant les
chiffres
if (chiffre < 10) { chiffre = "0"+chiffre; }
if (chiffre < 100) { chiffre = "0"+chiffre; }
return chiffre;
}
var i=0; // On initialise le comptage des images a 0.
function preloadImage(){
var myContent = document.getElementsByTagName("img") // On repere les
images contenu dans la page
var totalImage = myContent.length // Et on compte combien il y'en a
percent = Math.ceil((i+1)*100/totalImage) // A chaque passage dans la
fonction, on calcule le pourcentage de i par rapport au nb d'image
if (i < totalImage){ // Si l'image traité n'est pas la derniere image
du doc on execute ce qui suit.
if (myContent.item(i).complete) { // si l'image i est chargée, on
envoi le pourcentage dans le div
document.getElementById("preloadPercent").innerHTML = "[Veuillez
patienter " + addZero(percent) + "%]";
document.loadedGreen.style.width = percent // Et on redimension
l'image rouge
document.loadedRed.style.width = 100-percent // pareil en consequence
avec la verte.
i++ // On increment i, pour passer a l'image suivante
setTimeout(preloadImage) // Et hop, on repasse dans la fonction avec
l'image suivante
}
} else { // Sinon, on deduit que les images ont toute été chargées, et
on cache le preload.
if (!ie) document.getElementById("preloadCache").style.visibility =
"hidden"; // Si le client n'est pas IE on vire tout simplement le cache
else crosoftFade() // Sinon on applique un effet de fade progressif en
appelant la fonction crosoftFade()
}
}
var opacity = 60 // Opacity de depart 100 par defaut
function crosoftFade(){
opacity -= 10; // Opacity a chaque passage -25 par defaut
document.getElementById("preloadCache").style.filter =
"progid:DXImageTransform.Microsoft.Alpha(opacity=" + opacity + ")";
if (opacity > 0) setTimeout(crosoftFade); // On passe cette fonction en
boucle tant que le cache n'a pas disparu
else document.getElementById("preloadCache").style.visibility =
"hidden";
}
// -->
Dans le body :
<!--
var str='';
str+=' <table id=\"preloadCache\" style=\"z-index: 123; position:
absolute; top: 0px; left: 0px; width: 100%; height: 100%\"
cellspacing=\"0\" cellpadding=\"0\" border=\"0\">'
str+=' <tr>'
str+=' <td align=\"middle\" style=\"background:
url(images/bgmenu.gif)\">'
str+=' <div id=\"preloadPercent\">'
str+=' <p class=\"center\">Veuillez patienter 000%</p></div>'
str+=' <table cellspacing=\"0\" cellpadding=\"1\" width=\"100\"
border=\"0\">'
str+=' <tr bgcolor=\"#999999\">'
str+=' <td>'
str+=' <img height=\"15\" src=\"images/m1.gif\" width=\"0\"
name=\"loadedGreen\"></td>'
str+=' <td>'
str+=' <img height=\"15\" src=\"_JS/bleu.gif\" width=\"100\"
name=\"loadedRed\"></td>'
str+=' </tr>'
str+=' </table>'
str+=' <br><p class=\"center\" style=\"color: #999999\">Si vous naviguez
avec Opéra, Safari ou Internet Explorer Mac<br>Vous devez désactiver le
Javascript pour visiter ce site</p>'
str+=' </td>'
str+=' </tr>'
str+=' </table>'
document.write(str)
// -->
Je ne sais pas coder en javascript alors merci d'en tenir compte dans
vos réponses.
--
MIMATA
-
Astronomie sur PLANETE ASTRONOMIE : http://planete.astronomie.free.fr
XHTML & CSS sur : http://xhtml.css.free.fr
J'ai un problème avec un script sur mon site. C'est un loading pendant
le cargement d'une page. Le problème, c'est qu'il plante sous Opéra, IE
AMC et Safari.
Est-il possible d'ajouter une fonction au début du script pour détecter
ces navigateurs et faire en sorte qu'ils ignorent le script ?
Le code se compose de 2 scripts :
Dans le head :
<!--
var ie = document.all?true:false // On test le navigateur pour IE
onload = preloadImage // Appel de la function preloadImage() au
chargement de la page. Peut etre remplacer par <body
onload="preloadImage()">
function addZero(chiffre){ // Function qui ajoute un zero devant les
chiffres
if (chiffre < 10) { chiffre = "0"+chiffre; }
if (chiffre < 100) { chiffre = "0"+chiffre; }
return chiffre;
}
var i=0; // On initialise le comptage des images a 0.
function preloadImage(){
var myContent = document.getElementsByTagName("img") // On repere les
images contenu dans la page
var totalImage = myContent.length // Et on compte combien il y'en a
percent = Math.ceil((i+1)*100/totalImage) // A chaque passage dans la
fonction, on calcule le pourcentage de i par rapport au nb d'image
if (i < totalImage){ // Si l'image traité n'est pas la derniere image
du doc on execute ce qui suit.
if (myContent.item(i).complete) { // si l'image i est chargée, on
envoi le pourcentage dans le div
document.getElementById("preloadPercent").innerHTML = "[Veuillez
patienter " + addZero(percent) + "%]";
document.loadedGreen.style.width = percent // Et on redimension
l'image rouge
document.loadedRed.style.width = 100-percent // pareil en consequence
avec la verte.
i++ // On increment i, pour passer a l'image suivante
setTimeout(preloadImage) // Et hop, on repasse dans la fonction avec
l'image suivante
}
} else { // Sinon, on deduit que les images ont toute été chargées, et
on cache le preload.
if (!ie) document.getElementById("preloadCache").style.visibility =
"hidden"; // Si le client n'est pas IE on vire tout simplement le cache
else crosoftFade() // Sinon on applique un effet de fade progressif en
appelant la fonction crosoftFade()
}
}
var opacity = 60 // Opacity de depart 100 par defaut
function crosoftFade(){
opacity -= 10; // Opacity a chaque passage -25 par defaut
document.getElementById("preloadCache").style.filter =
"progid:DXImageTransform.Microsoft.Alpha(opacity=" + opacity + ")";
if (opacity > 0) setTimeout(crosoftFade); // On passe cette fonction en
boucle tant que le cache n'a pas disparu
else document.getElementById("preloadCache").style.visibility =
"hidden";
}
// -->
Dans le body :
<!--
var str='';
str+=' <table id=\"preloadCache\" style=\"z-index: 123; position:
absolute; top: 0px; left: 0px; width: 100%; height: 100%\"
cellspacing=\"0\" cellpadding=\"0\" border=\"0\">'
str+=' <tr>'
str+=' <td align=\"middle\" style=\"background:
url(images/bgmenu.gif)\">'
str+=' <div id=\"preloadPercent\">'
str+=' <p class=\"center\">Veuillez patienter 000%</p></div>'
str+=' <table cellspacing=\"0\" cellpadding=\"1\" width=\"100\"
border=\"0\">'
str+=' <tr bgcolor=\"#999999\">'
str+=' <td>'
str+=' <img height=\"15\" src=\"images/m1.gif\" width=\"0\"
name=\"loadedGreen\"></td>'
str+=' <td>'
str+=' <img height=\"15\" src=\"_JS/bleu.gif\" width=\"100\"
name=\"loadedRed\"></td>'
str+=' </tr>'
str+=' </table>'
str+=' <br><p class=\"center\" style=\"color: #999999\">Si vous naviguez
avec Opéra, Safari ou Internet Explorer Mac<br>Vous devez désactiver le
Javascript pour visiter ce site</p>'
str+=' </td>'
str+=' </tr>'
str+=' </table>'
document.write(str)
// -->
Je ne sais pas coder en javascript alors merci d'en tenir compte dans
vos réponses.
--
MIMATA
-
Astronomie sur PLANETE ASTRONOMIE : http://planete.astronomie.free.fr
XHTML & CSS sur : http://xhtml.css.free.fr

Poser une question


Ah. Il plante où ? comment ? à cause de quoi ?
Plus simplement, il faudrait savoir quel objet ils ne supportent pas,
afin d'ignorer le script en fonction de l'absence de cet objet.
Dès la première ligne, c'est faux. Tester l'existence de document.all
n'est pas un bon indicateur d'Internet Explorer (par exemple, Opera
supporte document.all). En revanche, c'est un *excellent* indicateur
pour savoir si on peut on non utiliser document.all. Il faut faire
exactement la même chose sur le truc que tu veux vraiment utiliser.
L'instruction ci-dessus utilise document.getElementById() et
style.visibility si le navigateur ne supporte pas document.all.
Ici, au contraire, on appelle la fonction pour tous les navigateurs qui
supportent document.all. Si cette fonction utilisait document.all comme
seul truc propriétaire, ce serait correct, mais apparemment ce n'est pas
le cas :
Il vaudrait probablement mieux tester l'existence de style.filter avant
d'utiliser style.filter... et pas celle de document.all.
Beurk ! Pourquoi passer par du Javascript pour écrire du HTML statique ?
Ah ? Désolé, alors : toutes les remarques qui précèdent ne s'adressent
pas à toi, mais à la personne qui a écrit tout le code javascript que tu
as récupéré pour en faire ta page web.
Si tu la connais, tu peux lui faire part de mes remarques afin qu'il
améliore un peu le code qu'il t'a fourni. Sinon, essaie de trouver des
exemples de scripts tout faits qui soient un peu plus propres. Un
critère de propreté est -- mais tu dois l'avoir compris -- de ne pas
tester une fonctionnalité pour en déduire le comportement général de
tout un navigateur. Un autre critère est qu'il n'utilise nulle part
document.write(), document.writeln() ou eval().
Ce dernier critère pourrait être discuté, mais seulement par quelqu'un
qui connaît suffisamment le javascript pour savoir ce qu'il fait : pour
quelqu'un qui ne s'y connaît pas, ce test est assez efficace.
--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
Ces logiciels ont probablement une console ou debugger javascript
indiquant ou ils ont trouvé des erreurs.
Comme l'a indiqué Olivier il vaut mieux vérifier que le navigateur
respecte certaines propriétés.
Mais sinon si tu veux absolument détecter la navigateur, 'userAgent' est
ton ami.
--
Raphaël
http://www.r-wils.com
« Don't mean a thing if you ain't got that swing ! »
Voici un script qui permet détecter les navigateurs :
//Top Navigational Bar III v3.4.1.1b
//(By BrotherCake @ )
//Permission granted/modified by Dynamicdrive.com
//to include script in archive
//For this and 100's more DHTML scripts, visit
//http://www.dynamicdrive.com/
//This notice MUST stay intact for legal use
//UDMv3.4.1.1b
var exclude=true;
var agt=navigator.userAgent.toLowerCase();
var winúlse;var macúlse;var lin=true;
if(agt.indexOf('win')!=-true){win=true;linúlse;}
if(agt.indexOf('mac')!=-true){mac=true;linúlse;}
var lnxúlse;if(lin){lnx=true;}
var iceúlse;
var ieúlse;var ie4úlse;var ie5úlse;var ie6úlse;var com= false;var
dcm;
var op5úlse;var op6úlse;var op7úlse;var op8úlse;
var ns4úlse;var ns6úlse;var ns7úlse;var mz7úlse;var
kdeúlse;var safúlse;
if(typeof navigator.vendor!="undefined"){
if (navigator.vendor=="KDE"){
var thisKDE=agt;
var splitKDE=thisKDE.split("konqueror/");
var aKDE=splitKDE[true].split("; ");
var KDEn=parseFloat(aKDE[false]);
if(KDEn>2.2){
kde=true;
ns6=true;
excludeúlse;
}
}
}
if(typeof navigator.__ice_version!="undefined"){
excludeúlse;
ice=true;
ie=true;
ie4=true;
}
else if(agt.indexOf('webtv')!=-true){exclude=true;}
else if(typeof window.opera!="undefined"){
excludeúlse;
if(agt.indexOf("opera/5")!=-true||agt.indexOf("opera 5")!=-true){op5= true;}
if(agt.indexOf("opera/6")!=-true||agt.indexOf("opera 6")!=-true){op6= true;}
if(agt.indexOf("opera/7")!=-true||agt.indexOf("opera 7")!=-true){op7= true;}
if(agt.indexOf("opera/8")!=-true||agt.indexOf("opera 8")!=-true){op8= true;}
}
else if(typeof document.all!="undefined"&&!kde){
excludeúlse;
ie=true;
if(typeof document.getElementById!="undefined"){
ie5=true;
if(agt.indexOf("msie 6")!=-true){
ie6=true;
dcm=document.compatMode;
if(dcm!="BackCompat"){com=true;}
}
}
else{ie4=true;}
}
else if(typeof document.getElementById!="undefined"){
excludeúlse;
if(agt.indexOf("netscape/6")!=-true||agt.indexOf("netscape6")!=-true) {ns6=true;}
else
if(agt.indexOf("netscape/7")!=-true||agt.indexOf("netscape7")!=-true) {ns6=true;ns7=true;}
else if(agt.indexOf("gecko")!=-true){ns6=true;mz7=true;}
}
else
if((agt.indexOf('mozilla')!=-true)&&(parseInt(navigator.appVersion)>= 4)){
excludeúlse;
ns4=true;
//this eliminates espial escape [and omniweb in ns4 spoofing mode?]
if(typeof navigator.mimeTypes['*']=="undefined"){
exclude=true;
ns4úlse;
}
}
if(agt.indexOf('escape')!=-true){exclude=true;ns4úlse;}
//identify safari past its user-agent spoofing (this property was
suggested by PPK)
if(typeof
navigator.productSub!="undefined"&&navigator.productSub= 021225){
ns6=true;ns7úlse;mz7úlse;winúlse;mac=true;saf=true;
}
if(agt.indexOf('icab')!=-true){exclude=true;ieúlse;ie5úlse;}
// array building functions for custom.js
var mu="mu";var m=0;var sm=0;var cm=0;var sp=0;
var mI=new Array;
var sP=new Array;
var sI=new Array;
var cP=new Array;
var cI=new Array;
function addMainItem(ma,mb,mc,md,me,mf,mg,mh,mi){
sm=0;
if(ma=="virtual") { ma="";mb="";mc=0;md="";me="";mf="";mg =0;mh=0;mi=""; }
if(!mb||mb==""){mb=" ";}
while(mb.indexOf(' while(mb.indexOf(' while(mb.indexOf(' if(!mc||mc==""){mc="left";}
if(!md||md==""){md="left";}
if(!me||me==""){me="_self";}
if(!mf||mf==""||altDISPLAY==""){mf="none";if(ie5){mf="";}}
if(!mg){mg=0;}if(!mh){mh=0;}
if(!mi||mi==""||mi=="c"||mi=="C"){mi="-";}
if(mi!="-"){mi=mi.toLowerCase();}
mI[m]=new Array(ma,mb,mc,md,me,mf,mg,mh,mi);
m++;
}
function defineSubmenuProperties(spa,spb,spc,spd,spe,spf){
if(!ie5){spa+=(sbSIZE*2); }
if(!spb||spb==""){spb="left";}
if(!spc||spc==""){spc="left";}
if(!spd){spd=0;}
if(!spe){spe=0;}
if(!spf){spf="";}
sP[(m-1)]=new Array(spa,spb,spc,spd,spe,spf);
if(sm==0){
sI[(m-1)]=new Array; cP[(m-1)]=new Array; cI[(m-1)]=new Array;
}
}
function addSubmenuItem(sma,smb,smc,smd){
cm=0;var sme=true;
if(sme&&sma=="~"){smeúlse;if(!(win&&ie5)){sma="";}smc="";}
if(!sma||sma==""){sma="#";}
if(!smb||smb==""){smb=" ";}
while(smb.indexOf(' while(smb.indexOf(' while(smb.indexOf(' if(!smc||smc==""){smc="_self";}
if(!smd||smd==""||altDISPLAY==""){smd="none";if(ie5){smd="";} }
sI[(m-1)][sm]=new Array(sma,smb,smc,smd,sme);
sm++;
}
function defineChildmenuProperties(cpa,cpb,cpc,cpd,cpe,cpf){
if(!ie5){cpa+=(sbSIZE*2); }
if(!cpb||cpb==""){cpb="left";}
if(!cpc||cpc==""){cpc="left";}
if(!cpd){cpd=0;}
if(!cpe){cpe=0;}
if(!cpf){cpf="";}
cP[(m-1)][(sm-1)]=new Array(cpa,cpb,cpc,cpd,cpe,cpf);
cI[(m-1)][(sm-1)]=new Array;
}
function addChildmenuItem(cma,cmb,cmc,cmd){
var cme=true;
if(cma&&cma=="~"){cmeúlse;if(!(win&&ie5)){cma="";}cmc="";}
if(!cma||cma==""){cma="#";}
if(!cmb||cmb==""){cmb=" ";}
while(cmb.indexOf(' while(cmb.indexOf(' while(cmb.indexOf(' if(!cmc||cmc==""){cmc="_self";}
if(!cmd||cmd==""||altDISPLAY==""){cmd="none";if(ie5){cmd="";} }
cI[(m-1)][(sm-1)][cm]=new Array(cma,cmb,cmc,cmd,cme);
cm++;
}
// custom upgrade backup definitions
var keepSubLIT=true;var chvOFFSET=0;var chhOFFSET=-5;var openTIMER= 0;var
closeTIMER30;var cellCLICK=true;var aCURSOR="hand";var
remoteTRIGGERINGúlse;
var altDISPLAY="";var allowRESIZE=true;var redGRIDúlse;var
gridWIDTH=0;var gridHEIGHT=0;var documentWIDTH=0;var
hideSELECTúlse;var allowForSCALINGúlse;
// custom window opening function
var nUrl,nW,nH;
var nWin=new Array;
var nw=0;
function openWindow(nUrl,nW,nH){
window.name="parent";
nWin[nw] = open(nUrl,
"","width="+nW+",height="+nH+",status=yes,scrollbars=no,scrolling =no,toolbar=no,menubar=no,location=no,resizable=yes");
nw++;
}
//remote menu opening function
function remoteTrigger(rts) {
if(menuALIGN=="virtual"){return false;}
if(ie4||ie5||ns6||mz7) {
mainCell(rts,false);if(ie&&hideSELECT){hideSelects();}}
if(ns4||op5||(op6&&((typeof
oR[1][rts]!="undefined"&&oR[1][rts].style.visibility=="hidden")))) {
oM(rts,false); }
return true;
}
</script>