检测窗口宽度并补偿滚动条 - Javascript

joh*_*ack 18 javascript screen width

如何使用Javascript和滚动条帐户检测用户窗口的宽度?(我需要滚动条内屏幕的宽度).这是我的...它似乎在多个浏览器中工作...除了它不考虑滚动条..

    function browserWidth() {
  var myWidth = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
  } else if( document.documentElement && document.documentElement.clientWidth ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
  } else if( document.body && document.body.clientWidth ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
  }
  return myWidth;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我需要它在所有浏览器中工作;)

小智 6

如果您只对宽度感兴趣,那么(明显令人讨厌的)解决方法是创建1px x 100%div并使用其offsetWidth.在IE> = 7,FF,Chrome浏览器,Safari和Opera(我没试过IE6,因为我们正在努力为you're,幸运-IT-作品不惜一切那么鸵鸟政策抱怨 - 这些天 - 关于渲染 - 古怪的政策.我将div.off与属性挂起{ position: 'absolute', top: '-1px', left: 0, width: '100%', height: '1px' },在第一次需要时创建它.

如果你可以忍受它的工作.


moo*_*dow 5

您将在quirksmode.org上找到此页面上哪些浏览器支持哪些属性的大摘要.

你最好的选择可能是在页面中获取一个元素(使用document.body支持,或者document.getElementById或其他),遍历其offsetParent链以找到最顶层的元素,然后检查该元素的clientWidth和clientHeight.