我在这里遇到了一个奇怪的问题。我知道 IE 在计算窗口的高度和宽度时与其他浏览器的行为有很大不同,但我对我发现的结果感到非常震惊。这是代码..
var i = 1;
setInterval(function() {
if (i % 2 == 0)
$("body").css("zoom","0.15");
else
$("body").css("zoom","1");
i++;
console.log(i+" ("+$(window).width()+" X "+$(window).height()+")");
},1000 );
代码非常简单。我正在做的是每隔一秒我使用 CSS3's zoom 缩放 body 属性和计算窗口的高度和宽度。它只是放大和缩小的主体,而窗口的尺寸保持不变。
现在,当我在 Firefox 中测试此脚本时,每次放大或缩小页面(理想情况)时,我都会得到统一的窗口尺寸。然而在 IE 中,情况并非如此。它在 (1004 X 358) 和 (6807 X 2500) 之间来回摆动,绝对没有调整窗口大小。当我使用 clientWidth
和 clientHeight
时,我得到了相同的读数。
我还附上了 IE 9 的控制台日志屏幕截图。我想知道在使用 zoom
属性时是否有任何方法可以获得实际的窗口尺寸。欢迎提出任何建议。
我正在使用以下文档类型
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
有趣的是,当我使用 <!DOCTYPE HTML> 时,我得到了正确的尺寸,但随后缩放不起作用。有什么方法可以获得正确的尺寸和工作缩放吗?
最佳答案
zoom
不是 CSS3 属性,而是纯粹的 MS 发明,这是相当古老的,也意味着他们可以做任何他们想做的事。
当您使用 <!DOCTYPE HTML>
时触发标准模式,然后在较新的 IE 中你需要使用 -ms-zoom
而不是 zoom
.
假设您的测试是正确的,我建议不要试图解决 IE 的错误行为而是着眼于更大的图景,但为此我需要了解:为什么你需要知道有多大窗口是?你为什么使用 zoom
?真正的 CSS3 属性如何 transform
?
关于javascript - 使用 CSS3 缩放属性时检测 IE 中的实际窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910203/