document.body.offsetWidth返回firefox中垂直滚动条从左侧到左侧的内部宽度值。 在IE中它没有,而是从左侧返回到垂直滚动条的右侧。 有没有人知道一种明智的方法,我可以做出一个可靠的方法,如“var = offsetw;” for offsetw是滚动条宽度我需要减去得到像fire.body.innerWidth值这样的firefox? 这是我拥有的。
if (parseInt(navigator.appVersion)>3) {
if (navigator.appName=="Netscape") {
winW = 16;
winH = 16;
}
if (navigator.appName.indexOf("Microsoft")!=-1) {
winW = 20;
winH = 20;
}
if (navigator.appName.indexOf("Mozilla")!=-1){
winW = 0;
winH = 0;
}
}
Firefox目前使用16值,而不是Mozilla线声明的零值,这表明它是错误的。
我正在添加或修复以获得winW和winH以获得每个浏览器的滚动条的正确大小,前提是这些浏览器不会自动从document.body.offsetWidth中减去滚动条
谢谢:)
答案 0 :(得分:2)
document.body.offsetWidth返回firefox中垂直滚动条左侧到左侧的内部宽度值。
不是我没有,它返回与IE,Opera,Konqueror和Safari相同的值。示例代码?
通过appName嗅探浏览器在最好的情况下是非常不可靠的,并且在这种情况下不会覆盖它,因为滚动条的大小受操作系统和用户首选项的影响比浏览器更多。
相反,如果要读取“内部大小”,请使用clientWidth / clientHeight而不是offsetWidth / offsetHeight,或者使用滚动条测量内部块的offsetWidth。
答案 1 :(得分:1)
你试过一个javascript库吗?这是摆脱这些问题的最简单方法。我建议:jquery或YUI(Yahoo用户界面),其中所有内容都包含在几乎每个浏览器都兼容的类中。
除此之外,在以下页面中,您可以找到一个函数来了解滚动条的宽度(我还没有测试过):
http://www.alexandre-gomes.com/?p=115
http://javascript.jstruebig.de/javascript/70/
代码是这样的(我不知道它是否与所有浏览器兼容):
function scrollbarWidth() {
// Scrollbalken im Body ausschalten
document.body.style.overflow = 'hidden';
var width = document.body.clientWidth;
// Scrollbalken
document.body.style.overflow = 'scroll';
width -= document.body.clientWidth;
// Der IE im Standardmode
if(!width) width = document.body.offsetWidth-document.body.clientWidth;
// urspr?ngliche Einstellungen
document.body.style.overflow = '';
return width;
}