使用跨浏览器表达式无法在没有滚动条的情况下获得屏幕宽度

时间:2014-12-06 20:19:21

标签: javascript

我在JavaScript中使用以下表达式来获取屏幕的宽度,除了在滚动时包含垂直滚动条的宽度外,它似乎工作正常。

var wMax = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)

问题:如何修改上述跨浏览器表达式,使其显示除垂直滚动条之外的屏幕宽度? 我需要使用JavaScript而不是jQuery。

更新1:

我发现以下跨浏览器表达式给出了不包括垂直滚动条的宽度。

var wMax = Math.min(document.documentElement.clientWidth, window.innerWidth 
                      || screen.width);
  1. 我使用Math.min而不是Math.max,因此宽度较小的宽度
  2. 并且在原始表达式中也使用了screen.width而不是0,因为在这种情况下,screen.width总是所有宽度的最大值,因为它总是包含滚动条。

1 个答案:

答案 0 :(得分:1)

screen.width是显示屏的宽度,而不是除滚动条之外的浏览器窗口。

您应该使用Math.min而不是Math.max,因为没有滚动条的宽度将小于带滚动条的宽度。

此外,如果浏览器无法正常工作,您可以尝试使用clientWidth之类的document.documentElement.scrollWidth来获取正文或html标记的宽度。