Bonjour,
J'ai un petit souci avec IE9.
Mon menu fonctionnait très bien jusqu'à présent avec FF, Safari et les anciennes versions d'IE... mais plus avec IE9.
C'est un menu déroulant, les titres ne s'affichent plus, IE9 me les a remplacé par "null".
Je n'arrive pas à trouver la solution.
Si quelqu'un connait la solution, je veux bien un peu d'aide SVP...
Merci d'avance !
> Voici une page du site internet :
http://www.domaines-tatin.com/vins-reuilly.html
> Et voici le code javascript :
// JavaScript Document
( function() {
// Test de passage d'un argument
var fnTest = function()
{
var iI = arguments.length - 1;
for(iI; iI >= 0; iI--) if(!arguments[iI]) return false;
return true;
};
// Ajout d'une action sur un événement
var fnConnect = function(oElem, sEvType, fn, bCapture)
{
return oElem.addEventListener ?
oElem.addEventListener(sEvType, fn, bCapture):
oElem.attachEvent ?
oElem.attachEvent('on' + sEvType, fn):
oElem['on' + sEvType] = fn;
};
// Retrait d'une action sur un événement
var fnDisconnect = function (oElem, sEvType, fn, bCapture)
{
return oElem.removeEventListener?
oElem.removeEventListener(sEvType, fn, bCapture):
oElem.detachEvent?
oElem.detachEvent('on' + sEvType, fn):
oElem['on' + sEvType] = null;
};
// Annulation du clic sur un élément
var fnCancelClick = function(e)
{
if(e && e.stopPropagation && e.preventDefault)
{
e.stopPropagation();
e.preventDefault();
return false; // Pour Safari
}
else if(window.event && window.event.cancelBubble && window.event.returnValue)
{
window.event.cancelBubble = true;
window.event.returnValue = false;
return false;
}
else return false;
};
// Récupération de la source de l'événement
var fnGetTarget = function(e)
{
var target = window.event ? window.event.srcElement : e ? e.target : this;
if(!target) return false;
if(target.nodeName.toLowerCase() != 'a') target = target.parentNode; //Pour Safari
return target;
};
// Affichage des menus
var fnMontre = function(e)
{
var oTarget = fnGetTarget(e);
var oList = oTarget.parentNode.getElementsByTagName('ul')[0];
oList.className = 'Montre';
fnDisconnect(oTarget, 'click', fnMontre, false);
fnConnect(oTarget, 'click', fnCache, false);
return fnCancelClick(e);
};
// Masquage des menus
var fnCache = function(e)
{
var oTarget = fnGetTarget(e);
oTarget.nextSibling.className = 'Cache';
fnDisconnect(oTarget, 'click', fnCache, false);
fnConnect(oTarget, 'click', fnMontre, false);
return fnCancelClick(e);
};
// Initialisation du menu
var fnMenu = function()
{
var oMenus = document.getElementById('menus'),
oItem = oMenus.getElementsByTagName('li'),
iI = oItem.length - 1,
oUl = oMenus.getElementsByTagName('ul'),
iJ = oUl.length - 1;
for(iJ; iJ >= 0; iJ--) if(oUl[iJ].className != 'Montre') oUl[iJ].className = 'Cache';
for(iI; iI >= 0; iI--)
{
if(oItem[iI].parentNode.getAttribute('id') == 'menus')
{
var oA = document.createElement('a'),
sTxtLi = oItem[iI].firstChild.nodeValue,
oTxtA = document.createTextNode(sTxtLi);
oA.setAttribute('href', '#ouverture-fermeture-Menu');
oA.appendChild(oTxtA);
oItem[iI].replaceChild(oA, oItem[iI].firstChild);
oA.nextSibling.className != 'Montre' ?
fnConnect(oA, 'click', fnMontre, false):
fnConnect(oA, 'click', fnCache, false);
}
}
};
// Méthode de chargement rapide
// Thanks to Dean Edwards, Matthias Miller & John Resig (http://dean.edwards.name/weblog/2006/06/again/)
function fnFastLoadEvent(func)
{
if(document.addEventListener) document.addEventListener('DOMContentLoaded', func, false);
/*@cc_on @*/
/*@if(@_win32) document.write('<scr'+'ipt id="__ie_onload" defer src="javascript:void(0)"><\/scr'+'ipt>');
var script = document.getElementById('__ie_onload');
script.onreadystatechange = function()
{
if(this.readyState === 'complete') func();
};
/*@end @*/
if(/WebKit/i.test(navigator.userAgent) && /loaded|complete/.test(document.readyState)) func();
};
// Test des méthodes du script et lancement si c'est bon...
fnTest(document.getElementById, document.getElementsByTagName, document.createElement, document.createTextNode) ?
fnFastLoadEvent(fnMenu) :
false;
} ) ();
> 2eme code javascript sur la page :
<script type="text/javascript">
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
</script>
J'ai un petit souci avec IE9.
Mon menu fonctionnait très bien jusqu'à présent avec FF, Safari et les anciennes versions d'IE... mais plus avec IE9.
C'est un menu déroulant, les titres ne s'affichent plus, IE9 me les a remplacé par "null".
Je n'arrive pas à trouver la solution.
Si quelqu'un connait la solution, je veux bien un peu d'aide SVP...
Merci d'avance !
> Voici une page du site internet :
http://www.domaines-tatin.com/vins-reuilly.html
> Et voici le code javascript :
// JavaScript Document
( function() {
// Test de passage d'un argument
var fnTest = function()
{
var iI = arguments.length - 1;
for(iI; iI >= 0; iI--) if(!arguments[iI]) return false;
return true;
};
// Ajout d'une action sur un événement
var fnConnect = function(oElem, sEvType, fn, bCapture)
{
return oElem.addEventListener ?
oElem.addEventListener(sEvType, fn, bCapture):
oElem.attachEvent ?
oElem.attachEvent('on' + sEvType, fn):
oElem['on' + sEvType] = fn;
};
// Retrait d'une action sur un événement
var fnDisconnect = function (oElem, sEvType, fn, bCapture)
{
return oElem.removeEventListener?
oElem.removeEventListener(sEvType, fn, bCapture):
oElem.detachEvent?
oElem.detachEvent('on' + sEvType, fn):
oElem['on' + sEvType] = null;
};
// Annulation du clic sur un élément
var fnCancelClick = function(e)
{
if(e && e.stopPropagation && e.preventDefault)
{
e.stopPropagation();
e.preventDefault();
return false; // Pour Safari
}
else if(window.event && window.event.cancelBubble && window.event.returnValue)
{
window.event.cancelBubble = true;
window.event.returnValue = false;
return false;
}
else return false;
};
// Récupération de la source de l'événement
var fnGetTarget = function(e)
{
var target = window.event ? window.event.srcElement : e ? e.target : this;
if(!target) return false;
if(target.nodeName.toLowerCase() != 'a') target = target.parentNode; //Pour Safari
return target;
};
// Affichage des menus
var fnMontre = function(e)
{
var oTarget = fnGetTarget(e);
var oList = oTarget.parentNode.getElementsByTagName('ul')[0];
oList.className = 'Montre';
fnDisconnect(oTarget, 'click', fnMontre, false);
fnConnect(oTarget, 'click', fnCache, false);
return fnCancelClick(e);
};
// Masquage des menus
var fnCache = function(e)
{
var oTarget = fnGetTarget(e);
oTarget.nextSibling.className = 'Cache';
fnDisconnect(oTarget, 'click', fnCache, false);
fnConnect(oTarget, 'click', fnMontre, false);
return fnCancelClick(e);
};
// Initialisation du menu
var fnMenu = function()
{
var oMenus = document.getElementById('menus'),
oItem = oMenus.getElementsByTagName('li'),
iI = oItem.length - 1,
oUl = oMenus.getElementsByTagName('ul'),
iJ = oUl.length - 1;
for(iJ; iJ >= 0; iJ--) if(oUl[iJ].className != 'Montre') oUl[iJ].className = 'Cache';
for(iI; iI >= 0; iI--)
{
if(oItem[iI].parentNode.getAttribute('id') == 'menus')
{
var oA = document.createElement('a'),
sTxtLi = oItem[iI].firstChild.nodeValue,
oTxtA = document.createTextNode(sTxtLi);
oA.setAttribute('href', '#ouverture-fermeture-Menu');
oA.appendChild(oTxtA);
oItem[iI].replaceChild(oA, oItem[iI].firstChild);
oA.nextSibling.className != 'Montre' ?
fnConnect(oA, 'click', fnMontre, false):
fnConnect(oA, 'click', fnCache, false);
}
}
};
// Méthode de chargement rapide
// Thanks to Dean Edwards, Matthias Miller & John Resig (http://dean.edwards.name/weblog/2006/06/again/)
function fnFastLoadEvent(func)
{
if(document.addEventListener) document.addEventListener('DOMContentLoaded', func, false);
/*@cc_on @*/
/*@if(@_win32) document.write('<scr'+'ipt id="__ie_onload" defer src="javascript:void(0)"><\/scr'+'ipt>');
var script = document.getElementById('__ie_onload');
script.onreadystatechange = function()
{
if(this.readyState === 'complete') func();
};
/*@end @*/
if(/WebKit/i.test(navigator.userAgent) && /loaded|complete/.test(document.readyState)) func();
};
// Test des méthodes du script et lancement si c'est bon...
fnTest(document.getElementById, document.getElementsByTagName, document.createElement, document.createTextNode) ?
fnFastLoadEvent(fnMenu) :
false;
} ) ();
> 2eme code javascript sur la page :
<script type="text/javascript">
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
</script>