0

我在这里面临一个奇怪的问题。我知道 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 的缩放属性缩放身体并计算窗口的高度和宽度。它只是放大和缩小的主体,而窗口的尺寸保持不变。

现在,当我在 Firefox 中测试此脚本时,每次放大或缩小页面时都会获得统一的窗口尺寸(理想情况)。但是在 IE 中并非如此。它在 (1004 X 358) 到 (6807 X 2500) 之间来回摆动,绝对不会调整窗口大小。当我使用clientWidth&时,我得到了相同的读数clientHeight

我还附上了 IE 9 的控制台日志屏幕截图。我想知道是否有任何方法可以在使用zoom属性时获得实际的窗口尺寸。欢迎任何建议。

我正在使用以下文档类型

< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 过渡//EN" >

有趣的是,当我使用< !DOCTYPE HTML>时,我得到了正确的尺寸,但是缩放不起作用。有什么办法可以得到正确的尺寸和工作变焦?

在此处输入图像描述

4

1 回答 1

0

zoom不是 CSS3 的属性,而是纯粹的 MS 发明,它相当古老,也意味着他们可以为所欲为。

当您使用<!DOCTYPE HTML>触发标准模式时,在较新的 IE 中您需要使用-ms-zoom而不是zoom.

假设你的测试是正确的,我建议不要试图解决 IE 的错误行为,而是着眼于更大的图景,但为此我需要知道:你为什么需要知道窗口有多大?你为什么用zoom?那么真正的 CSS3 属性transform呢?

于 2012-12-17T10:20:10.207 回答