document.documentElement.clientWidth 为什么有时候会获取到0

发布于 2022-09-07 19:54:28 字数 682 浏览 32 评论 0

移动端项目,需要通过js设置1rem是多少像素,但是获取设备宽度document.documentElement.clientWidth在手机QQ聊天对话框中拿到的document.documentElement.clientWidth 偶尔为0。在真正的QQ浏览器中不会有问题。不知道手机QQ聊天对话框中的这个浏览器是什么鬼。

改为document.body.clientWidth 也会偶尔获取到0

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
    <title>Document</title>
</head>
<body>
   <script>
        window.onload=function () {
            var remSize = document.documentElement.clientWidth
        }
</script> 
</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

策马西风 2022-09-14 19:54:28

问题复现

没有qq浏览器,ie浏览器,把内核调到ie5,问题出现
document.documentElement.clientWidth一直为0

思路

用jQuery能不能解决这个问题呢,比如
$("body").width()
测试有效。
故而查看jQuery源码

clipboard.png

可以看到它取元素的话

如果是window对象的话会去取document.documentElement.clientWidth
否则会去取document.body.scrollWidth和document.documentElement.clientWidth的较大值

方案

window.onload=function () {
    var width =Math.max(document.body.scrollWidth,document.documentElement.clientWidth);
    console.log(width);
}

clipboard.png

ゝ偶尔ゞ 2022-09-14 19:54:28

我现在也遇到这个问题了,不是QQ浏览器。而是公司APP的webview,奇怪的是。只有其中一个页面会出现这个情况。我也很纳闷。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文