J'ai une page Web qui utilise un div de défilement pour afficher les informations de la table. Lorsque la fenêtre est redimensionnée (et aussi au chargement de la page), l'affichage est centré et la barre de défilement de la div positionnée à droite de la page en définissant sa largeur. Pour une raison quelconque, le comportement est différent sous firefox que IE. IE positionne/divise le div comme prévu, mais firefox semble le rendre trop large, de sorte que la barre de défilement commence à disparaître lorsque la largeur du client fenêtre atteint environ 800px. J'utilise les méthodes suivantes pour définir la position et la taille:Ce qui est différent avec les largeurs de fenêtre et de div entre firefox et IE
function getWindowWidth() {
var windowWidth = 0;
if (typeof(window.innerWidth) == 'number') {
windowWidth=window.innerWidth;
}
else {
if (document.documentElement && document.documentElement.clientWidth) {
windowWidth=document.documentElement.clientWidth ;
}
else {
if (document.body && document.body.clientWidth) {
windowWidth=document.body.clientWidth;
}
}
}
return windowWidth;
}
function findLPos(obj) {
var curleft = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft
}
}
return curleft;
}
var bdydiv;
var coldiv;
document.body.style.overflow="hidden";
window.onload=resizeDivs;
window.onresize=resizeDivs;
function resizeDivs(){
bdydiv=document.getElementById('bdydiv');
coldiv=document.getElementById('coldiv');
var winWdth=getWindowWidth();
var rghtMarg = 0;
var colHdrTbl=document.getElementById('colHdrTbl');
rghtMarg = parseInt((winWdth - 766)/2) - 8;
rghtMarg = (rghtMarg > 0 ? rghtMarg : 0);
coldiv.style.paddingLeft = rghtMarg + "px";
bdydiv.style.paddingLeft = rghtMarg + "px";
var bdydivLft=findLPos(bdydiv);
if ((winWdth - bdydivLft) >= 1){
bdydiv.style.width = winWdth - bdydivLft;
coldiv.style.width = bdydiv.style.width;
}
syncScroll();
}
function syncScroll(){
if(coldiv.scrollLeft>=0){
coldiv.scrollLeft=bdydiv.scrollLeft;
}
}
Notez que j'ai découpé autre code qui fixe la hauteur, et d'autres parties non pertinentes. La page entière peut être vue here. Si vous allez sur le lien dans IE et Firefox, redimensionner la largeur jusqu'à ce que "800" s'affiche dans la boîte verte en haut à droite, et redimensionner la hauteur jusqu'à ce que la barre de défilement à droite est activée, vous pouvez voir le problème. Si vous redimensionnez ensuite la largeur IE, la barre de défilement reste, mais si vous redimensionnez la largeur firefox plus large, la barre de défilement commence à disparaître. Je ne sais pas pourquoi cela se produit ....
Notez que AFAIK, getWindowWidth() devrait être compatible avec tous les navigateurs, mais je ne suis pas si sûr de findLPos() .... Peut-être qu'il y a un objet supplémentaire dans le DOM de Firefox ou quelque chose qui change le résultat?
Est-ce IE6 ou IE7? – mmacaulay
IE7, mais je pense que c'est la même chose dans 6 (non testé) – Graza