Bonjour à tous,
J'ai récupéré un menu sur le web que j'ai modifié pour mon usage...
Un menu est situé dans la page index.htm et dans cette page index.htm il y a un iFrame.
Le menu contient des liens qui commande l'affichage de pages dans cet iFrame.
Avec le script ci-dessous, il n'y a aucune erreur tant que je travaille en local ou bien avec l'adresse physique du site : pagesperso.orange.fr/mondomaine/index.htm
Si j'appelle index.htm par son adresse virtuelle www.mondomaine.fr , je reçois l'erreur :
'window.top.frames[...].location a la valeur null ou n'est pas un objet'
Le code incriminé, dans la partie javascript, est coloré en rouge plus bas...
J'ai contacté mon fournisseur de domaine, apparemment, il s'en tape :-( car je n'ai aucune réponse.
Pourriez-vous m'aider ?
Le code HTML :
...
<script language="javascript" type="text/javascript" >
generation();
</script>
...
<iframe id="mFrame" name="mFrame" scrolling="auto" src="main.htm">
</iframe>
Le code javascript :
<script language="javascript" type="text/javascript" >
var largeurMenu = 195
var policeMenu = "Tahoma"
var taillePoliceMenu = "11"
var couleurPoliceMenu = "#0000C4"
var couleurBordure = "#EBEBEB"
var couleurFond = "#B0D8FF"
var couleurFond2 = "#F0F8FF"
var couleurLienRollOver = "#FFFFFF"
var couleurFondRollOver = "#959EAD"
var menu = new Array();
menu[0]="Accueil";
menu[1]="blabla";
var ssmenuNom = new Array();
var ssmenuLien = new Array();
var ssmenuTarget = new Array();
ssmenuNom[0] = new Array();
ssmenuLien[0] = new Array();
ssmenuTarget[0] = new Array();
ssmenuNom[0][0] = "Accueil du site";
ssmenuLien[0][0] = " http://www.mondomaine.fr/index.htm ";
ssmenuTarget[0][0] = "_parent";
ssmenuNom[1] = new Array();
ssmenuLien[1] = new Array();
ssmenuTarget[1] = new Array();
ssmenuNom[1][0] = "Blablabla";
ssmenuLien[1][0] = " http://www.mondomaine.fr/products/la.htm ";
ssmenuTarget[1][0] = "mFrame";
ssmenuNom[1][1] = "YetBlablabla";
ssmenuLien[1][1] = " http://www.mondomaine.fr/products/la.htm ";
ssmenuTarget[1][1] = "mFrame";
var nbMenu = menu.length;
var ie=document.all
var ns6=document.getElementById&&!document.all
function montreMenu(num){
for (var i=0; i<nbMenu; i++) {
if (ie) {
objet = document.all["ssmenu"+i]
} else if (ns6) {
objet = document.getElementById("ssmenu"+i);
}
if (objet.style.display == ""){
objet.style.display = "none"
}
}
if (ie) {
objet = document.all["ssmenu"+num]
} else if (ns6) {
objet = document.getElementById("ssmenu"+num);
}
if (objet.style.display == "none"){
objet.style.display = ""
}
}
function rollOver(lien) {
lien.style.background = couleurFondRollOver;
lien.style.color = couleurLienRollOver;
}
function rollOut(lien) {
lien.style.background = couleurFond2;
lien.style.color = couleurPoliceMenu;
}
function ouvreLien(url,mode) {
if (mode == "_blank") {
window.open(url)
} else if (mode == "_self") {
window.top.location.href = url
} else {
////////////////// LE PROBLEME EST CI-APRES ///////////////////////////
window.top.frames[mode].location.href = url
///////////////////////////////////////////////////////////////////////
}
}
function generation () {
document.write("<style type='text/css'>");
document.write("td.menu {");
document.write(" font-family: "+policeMenu+";");
document.write(" font-size: "+taillePoliceMenu+"px;");
document.write(" font-weight: bold;");
document.write(" color: "+couleurPoliceMenu+";");
document.write(" border: 2px solid "+couleurBordure+";");
document.write(" height: 18px;");
document.write(" background-color: "+couleurFond+";");
document.write("}");
document.write("table.ssmenu {");
document.write(" font-family: "+policeMenu+";");
document.write(" font-size: "+taillePoliceMenu+"px;");
document.write(" color: "+couleurPoliceMenu+";");
document.write(" border: 1px solid "+couleurBordure+";");
document.write(" height: 18px;");
document.write(" background-color: "+couleurFond2+";");
document.write("}");
document.write("</style>");
document.write("<table width='"+largeurMenu+"' border='0' cellspacing='0' cellpadding='0'>");
for (i=0; i<nbMenu; i++) {
document.write("<tr>");
document.write("<td onMouseOver='montreMenu("+i+")' style='cursor:hand' class='menu'>"+menu[i]+"</td>");
document.write("</tr>");
document.write("<tr style='display:none' id='ssmenu"+i+"'>");
document.write("<td>");
document.write("<table width='"+largeurMenu+"' border='0' cellspacing='0' cellpadding='0'>");
document.write("<tr>");
document.write("<td width='2'></td>");
document.write("</tr>");
document.write("</table>");
document.write("<table width='"+largeurMenu+"' border='0' cellspacing='0' cellpadding='0' class='ssmenu'>");
for (z=0; z<ssmenuNom[i].length; z++) {
document.write("<tr>");
document.write("<td onMouseOver='rollOver(this)' onMouseOut='rollOut(this)' onClick='ouvreLien(\""+ssmenuLien[i][z]+"\",\""+ssmenuTarget[i][z]+"\")' style='cursor:hand'>"+ssmenuNom[i][z]+"</td>");
document.write("</tr>");
}
document.write("</table>");
document.write("</td>");
document.write("</tr>");
document.write("<tr>");
document.write("<td width='2'></td>");
document.write("</tr>");
}
document.write("</table>");
}
</script>
Merci de votre aide.
Patrice.