首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >window.clientWidth在IE中始终为0

window.clientWidth在IE中始终为0
EN

Stack Overflow用户
提问于 2012-10-01 19:04:08
回答 1查看 2.3K关注 0票数 2

我需要在IE文件的包含窗口的实际像素clientWidth,以计算一个适当的缩放值,但发现窗口总是返回一个值0。有办法从任何DOM对象中获取这个值吗?我是一个JS新手,我发现只要变焦是100 %,document.body.clientWidth就能做到这一点,但否则会返回放大的像素值。帮助?

EN

回答 1

Stack Overflow用户

发布于 2012-10-01 19:20:20

在早期版本8的Internet中,它以物理像素大小检索宽度,而从版本8中,它以逻辑像素大小返回宽度。

什么意思?

如果浏览器没有处于正常的缩放级别(用户能够放大或缩小网页: CTRL和+、CTRL和-),则clientWidth属性的工作方式不同于早期版本的版本8。

  • 即使文档中的当前像素大小不同,在版本8之前的Internet中,宽度也是在默认像素大小中计算的。
  • 在Internet 8和Firefox、Opera、Google和Safari中,宽度是以当前像素大小计算的。

例如,如果缩放级别为200%,则对于相同的客户端窗口大小,clientWidth属性在版本8之前检索的值比从版本8检索的值大两倍。

对于跨浏览器解决方案获取浏览器窗口的大小:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<head>
    <script type="text/javascript">
        // always return 1, except at non-default zoom levels in IE before version 8
        function GetZoomFactor() {
            var factor = 1;
            if (document.body.getBoundingClientRect) {
                // rect is only in physical pixel size in IE before version 8 
                var rect = document.body.getBoundingClientRect();
                var physicalW = rect.right - rect.left;
                var logicalW = document.body.offsetWidth;
                // the zoom level is always an integer percent value
                factor = Math.round((physicalW / logicalW) * 100) / 100;
            }
            return factor;
        }

        function GetWindowSize() {
            var zoomFactor = GetZoomFactor();
            var w = Math.round(document.documentElement.clientWidth / zoomFactor);
            var h = Math.round(document.documentElement.clientHeight / zoomFactor);
            var info = document.getElementById("info");
            info.innerHTML = w + "px * " + h + "px";
        }
    </script>
</head>
<body onload="GetWindowSize ()">Size of the browser's client area:
<span id="info" style="margin-left:20px;"></span>

    <div
    style="width:500px; height:1000px; background-color:#e0a0a0;">Size of this element: 500px * 1000px</div>
</body>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12684007

复制
相关文章
使用rvm在Mac中安装ruby和rails
MacOS默认安装的是ruby 1.8.7,如果你想使用ruby 1.9.2的话,除了在官网下载源码编译安装外,可以使用rvm来协助安装。
EltonZheng
2021/01/22
3.2K0
MySQL在删除表时I/O错误原因分析
问题现象 最近使用sysbench测试MySQL,由于测试时间较长,写了一个脚本按prepare->run->cleanup的顺序在后台跑着。跑完后察看日志发现一个问题,MySQL服务的错误日志中出现多条类似以下信息的报错: [ERROR] InnoDB: Trying to do I/O to a tablespace which does not exist. I/O type: read, page: [page id: space=32, page number=57890], I/O length
腾讯数据库技术
2018/07/19
1.9K0
在使用Vue2.0中使用axios库时,遇到415错误
解决办法:在axios的第三个参数config中,设置请求头信息'Content-Type': 'application/json;charset=UTF-8'
Arebirth
2020/06/19
3.4K0
在Django 2.2中启动开发服务器时处理SQLite3错误
当python3 manage.py runserver启动django项目的时候,就会出现报错信息如下: django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
Devops海洋的渔夫
2019/05/30
4.2K0
使用java(jdbc)向mysql中添加数据时出现“unknown column……”错误
这里的date变量其实我是用SimpleDate类设置的是一个字符串类型的数据了,根据上面的叙述,得知这个“+date+”还是需要使用单引号引起来的,如下:
roobtyan
2019/02/21
5.2K0
mysql远程连接错误。1044 解决
mysql> GRANT ALL PRIVILEGES ON *.* TO root@’ip’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
kirin
2020/09/07
4.6K0
RxJS 在 Angular响应式表单中的使用
FormControl 的 valueChanges 属性和 statusChanges 属性包含了会发出变更事件的可观察对象。 例子
mafeifan
2019/03/04
5.1K0
3. 在Django 2.2中启动开发服务器时处理SQLite3错误
当python3 manage.py runserver启动django项目的时候,就会出现报错信息如下:django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
Devops海洋的渔夫
2022/01/17
1.4K0
Django提交表单时遇到403错误:CSRF verification failed
django 提交表单 提示403:CSRF verification failed 后台日志: UserWarning: A {% csrf_token %} was used in a template, but the context did not provide the value. This is usually caused by not using RequestContext. "A {% csrf_token %} was used in a template, but the
程序员同行者
2018/07/02
1.9K0
mysql 1146 错误处理
问题出现是因为 之前 把 mysql/data/ ibdata1 , ib_logfile0, ib_logfile1, ib_logfile2 文件 删除了,mysql重启之后会自动生成 这些文件的。但是之前的innodb引擎,就不能再 访问了。
全栈程序员站长
2022/07/01
2.7K0
MYSQL 8 和 POLARDB 在处理order by 时的缺陷问题
先说说这个问题,这个问题在POLARDB 和 MYSQL 都存在,所以这不是POLARDB 代码的问题,这是存在于 MYSQL 8 的问题, 而由于POLARDB 使用了 MYSQL 的语句处理和解析等部分,导致的跟随性问题。
AustinDatabases
2022/12/13
1.3K0
MYSQL  8 和 POLARDB  在处理order by 时的缺陷问题
Mysql 远程连接权限错误1045问题
#今天新安装mysql以后,由于没有勾选Enable root access from remote machines 而再连接数据库时出现了以下问题
全栈程序员站长
2022/07/25
2K0
Mysql 远程连接权限错误1045问题
IDEA远程提交hadoop任务时出现的错误
上述问题解决:开启historyserver服务 mr-jobhistory-daemon.sh start historyserver
ZONGLYN
2019/08/08
2.3K0
MySQL 远程连接及错误的解决
mysql -uroot -p grant all on *.* to baimoc@'%' identified by '123456' with grant option; flush privileges;
白墨石
2021/01/13
1.2K0
在 MySQL 中处理日期和时间(三)
在本系列关于日期和时间的前两部分中,我们介绍了 MySQL 的五种时态数据类型。现在是时候将注意力转移到 MySQL 的许多面向日期或时间的函数了。
MySQL技术
2022/06/08
3.8K0
在 MySQL 中处理日期和时间(三)
在 MySQL 中处理日期和时间(四)
在这个关于日期和时间的系列中,我们探索了 MySQL 的五种时态数据类型,以及它的许多面向日期或时间的函数中的一些。在本文中,我们将介绍在 MySQL 中创建日期和时间的几种方法。
MySQL技术
2022/06/08
3.9K0
在 MySQL 中处理日期和时间(四)
在 MySQL 中处理日期和时间(二)
欢迎回到这个关于在 MySQL 中处理日期和时间的系列。在前面章节中,我们探讨 MySQL 的时态数据类型。第一部分介绍了 DATE、TIME 和 DATETIME 数据类型,而本部分将介绍余下的 TIMESTAMP 和 YEAR 类型。
MySQL技术
2022/06/08
3.4K0
在 MySQL 中处理日期和时间(二)
在MySQL中处理组织层次(中文路径)
假设有这样的组织层次,“某某局”,“某某局>某某部”,“某某局>某某部>某某下属组织”, “某某局”是一级组织所以他的组织层次就是他自己的组织名字,而类似“某某部”这样的二级组织,他们的组织层次就是“某某局>某某部”,中间用“>”(大于号)分隔,从一级组织一直到他自己的组织名字连接起来。
用户3579639
2018/10/19
1.2K0
在Debian 9上使用Apache安装Ruby on Rails
Ruby on Rails是一个服务器端Web应用程序框架。它维护了一组策划组件和“约定优于配置”的理念,使得我们可以快速开发应用程序而无需大量样板。本指南将向您展示如何使用Phusion Passenger在您的Linode上部署Rails应用程序。Passenger允许您直接在Apache应用程序中嵌入Rails应用程序,而无需担心FastCGI或复杂的Web服务器代理。
GIStudy
2018/08/28
5.8K0
在 MySQL 中处理日期和时间(一)
绝大多数数据库存储了大量的“时态”数据。时态数据只是表示时间状态的简单数据。一个组织可能出于各种原因收集时态数据,例如分析天气模式和其他环境变量、监控交通状况、研究人口趋势等。企业还经常需要存储有关何时下订单、何时补货、何时雇用员工,以及有关其日常业务的大量其他信息。
MySQL技术
2022/06/08
3.6K0
在 MySQL 中处理日期和时间(一)

相似问题

Threejs -I无法从JSONLoader加载材料

11

ThreeJS分配阵列材料

11

ThreeJs OBJLoader + MTLLoader :材料加载但不显示

11

通过脚本将多个材料分配给游戏对象?

20

ThreeJS Phong材料要黑了

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文