javascript - 使用 CSS3 缩放属性时检测 IE 中的实际窗口大小

标签 javascript html internet-explorer css doctype

我在这里遇到了一个奇怪的问题。我知道 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) 之间来回摆动,绝对没有调整窗口大小。当我使用 clientWidthclientHeight 时,我得到了相同的读数。

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

我正在使用以下文档类型

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

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

enter image description here

最佳答案

zoom不是 CSS3 属性,而是纯粹的 MS 发明,这是相当古老的,也意味着他们可以做任何他们想做的事。

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

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

关于javascript - 使用 CSS3 缩放属性时检测 IE 中的实际窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910203/

相关文章:

javascript - 如何在使用重复 Angular Material 时根据屏幕尺寸隐藏一些表格列

javascript - 自调用函数

javascript - 有人可以解释一下这个函数吗,因为我不确定使用索引的目的

css - 按钮仅在 Internet Explorer 中被剪切

javascript - 当获取 30MB 或更多数据时,Internet Explorer 将 undefined 传递给成功回调

javascript - 调用 "TypeError: Cannot read property ' 时获取 `npm start` 文件名' of undefined"

html - 如何从 div 中排除一个 css 类?

html - CSS: make overflow-x: hidden 真的隐藏了吗?

html - 带有 pdf 的 <object> 标签在 firefox 中不起作用,在 IE 中困惑

javascript - 如何选择:after element using jquery