繁体   English   中英

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

[英]Cannot get width of screen without scrollbar using cross-browser expression

我在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始终是所有宽度的最大值,因为它始终包含滚动条。

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

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

另外,如果有一个无法正常运行的浏览器,则可以尝试获取没有clientWidth的body或html标签的宽度,例如document.documentElement.scrollWidth

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM