如果没有使用跨浏览器表达式的滚动条,则无法获取屏幕宽度

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

本文关键字:取屏幕宽度 滚动条 浏览器 表达式 如果没有      更新时间:2023-09-26

我在 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因为没有滚动条的宽度将小于带滚动条的宽度。

此外,如果浏览器无法正常工作,您可以尝试获取正文或 html 标签的宽度,而无需像这样document.documentElement.scrollWidth clientWidth

相关文章: