Script pas compatible avec internet explore7

Résolu
lionheart42 -  
zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un soucis avec mon site j'ai mis un code pour le menu mais il ne fonctionne pas sous ie7
htpp://tpk42.free.fr
jarrive pas a comprendre pourquoi on a une detection de navigateur et comment cela fonctionne.

merci pour votre aide

le code est le suivant


document.write('<style type="text/css">');

document.write('table.menu {');
document.write(' border: 1px solid '+ background +'');
document.write(' color: '+ couleurTexte +';');
document.write('}');

document.write('td.inc {');
document.write(' font-family: '+ police +';');
document.write(' font-size: '+ taillePolice +'px;');
document.write(' color: '+ couleurTexte +';');
document.write(' text-decoration: none;');
document.write(' background-color: '+ couleurFond +';');
document.write(' border-top-width: 1px;');
document.write(' border-right-width: 1px;');
document.write(' border-bottom-width: 1px;');
document.write(' border-left-width: 0px;');
document.write(' border-top-style: solid;');
document.write(' border-right-style: solid;');
document.write(' border-bottom-style: solid;');
document.write(' border-left-style: solid;');
document.write(' border-top-color: '+ couleurBordure +';');
document.write(' border-right-color: '+ couleurBordure +';');
document.write(' border-bottom-color: '+ couleurBordure +';');
document.write(' border-left-color: '+ couleurBordure +';');
document.write(' cursor: hand;');
document.write('}');

document.write('td.menu {');
document.write(' font-family: '+ police +';');
document.write(' font-size: '+ taillePolice +'px;');
document.write(' color: '+ couleurTexte +';');
document.write(' text-decoration: none;');
document.write(' background-color: '+ couleurFond +';');
document.write(' border: 1px solid '+ couleurBordure +';');
document.write(' cursor: hand;');
document.write('}');

document.write('td.ssmenuD {');
document.write(' font-family: '+ police +';');
document.write(' font-size: '+ taillePolice +'px;');
document.write(' color: '+ couleurTexte +';');
document.write(' text-decoration: none;');
document.write(' background-color: '+ couleurFond +';');
document.write(' border: 1px solid '+ couleurBordure +';');
document.write('}');

document.write('a.ssmenu {');
document.write(' font-family: '+ police +';');
document.write(' font-size: '+ taillePolice +'px;');
document.write(' text-decoration: none;');
document.write(' color: '+ couleurTexte +';');
document.write('}');

document.write('td.invisible {');
document.write(' background-color: '+ background +';');
document.write(' border: 1px solid '+ background +';');
document.write('}');

document.write('</style>');

var is_ie5 = 0;
var is_ns6 = 0;
var is_ns4 = 0;
var is_ie4 = 0;
if ((document.getElementById) && (document.all)){
is_ie5 = 1;
} else if(document.getElementById){
is_ns6 = 1;
}
if (document.layers) {
is_ns4 = 1;
}
if ((document.all)&&(!document.getElementById)) {
is_ie4 = 1;
}



function generationMenu(){
// Affichage du menu
document.write('<table width="'+ tailleMenu +'" border="0" cellspacing="0" cellpadding="0">');
document.write('<tr align="center" class="menu">');
for (i=0;i<nbMenu;i++) {
var classe = "inc";
if ( i==0 ){
classe="menu";
}
document.write('<td onMouseOut="javascript:this.style.background=\''+ couleurFond +'\'" onMouseOver="javascript:this.style.background=\''+ couleurRollover +'\'" class="'+ classe +'" width="'+ tailleCellule +'"onClick="changeMenu('+ i + ')">'+ valMenu[i] +'</td>');
}
document.write('</tr>');

// Préparation des sous-menus
document.write('<tr border="0" class="menu"><td colspan='+ nbMenu +' class="ssmenu" border="0">');
if (is_ie5 || is_ie4 || is_ns6){
document.write('<DIV id="ssMenu" style="position:relative;top:0px;left:0px;width='+ tailleMenu +';height='+ hauteur +';visibility:hidden">');
document.write('</DIV>');
}
document.write('</td></tr>');
document.write('</table>');
}


function changeMenu(numMenu){
// Génération du nouveau tableau
var newTable="";
newTable += "<table border='0' cellspacing='0' cellpadding='0' width='"+ tailleMenu +"' class=menu><tr>";
for (i=0;i<valSsMenu.length;i++) {
if ( i==numMenu ) {
newTable += "<td class='ssmenuD' width='"+ tailleCellule +"'>";
for (z=0;z<valSsMenu[i].length;z++) {
// On affiche les liens
newTable += "<a href='"+ valSsMenuLien[i][z] +"' target='"+ valSsMenuCible[i][z] +"' onMouseOut='javascript:this.style.color=\""+ couleurTexte +"\"' onMouseOver='javascript:this.style.color=\""+ couleurTexteRoller +"\"' class='ssmenu'>"+ valSsMenu[i][z] + "</a><br>";
}
newTable += "<a href='javascript:suppMenu()'><center><img src='"+ image +"' border=0></center></a></td>";
}else{
newTable += "<td class='invisible' width='"+ tailleCellule +"'> </td>";
}
}
newTable += "</tr></table>";
if (is_ie5 || is_ns6){
document.getElementById("ssMenu").innerHTML = newTable;
document.getElementById("ssMenu").style.visibility = "visible";
} else if (is_ie4) {
document.all["ssMenu"].innerHTML = newTable;
document.all["ssMenu"].style.visibility = "visible";
}
}

function suppMenu() {
document.getElementById("ssMenu").style.visibility = "hidden";
}
A voir également:

3 réponses

zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   199
 
Salut, le problème ne viens pas du script, mais de la page elle même...
Dans le <style> tu met <!-- , c'est correct, mais tu as oublié de le refermer. Ensuite tu as un <link/>, un <meta/> et le <style> avant le <head>, met les dedans, ça marcheras mieux. A la place de <script language="JavaScript"> met <script type="text/javascript">.
1
lionheart42
 
Merci de ta reponse, tout fonctionne comme il faut maintenant une autre question peux tu me dire pourquoi sous ie j'ai partie noire sous le menu qui mesure la moitié de la page alors que sous firefox elle est figée a la taille que je souhaite.
cdt
0
lionheart42
 
c'est bon je vien de trouver j'ai passé ma page sur www.w3c.com

merci @++
0
zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   199
 
A vrai dire, la j'en sais rien, et rendre compatible un code comme ça entre ie et Firefox, ça relève du miracle. Des document.write un peu partout c'est un peu galère a débugguer. La, c'est du javascript hyper intrusif, et si par malheur un visiteur désactive le javascript, ton site est tout simplement inutilisable. A mon avis, tu devrais complètement changer de méthode.
Ce que devrais faire, c'est mettre tout ce que tu as dans les document.write en html directement.
Mettre les menu cachés dans des div en visibility:hidden avec du css et changer ce visibility avec du js. Ton site sera beaucoup plus léger et bien plus compatible avec tout les navigateurs.
0