如何在 Internet Explorer 7 中获得缩放级别? (javascript)
Posted
技术标签:
【中文标题】如何在 Internet Explorer 7 中获得缩放级别? (javascript)【英文标题】:How to get zoom level in Internet Explorer 7? (javascript) 【发布时间】:2010-10-15 09:37:27 【问题描述】:在 Internet Explorer 7 中,某些属性(鼠标坐标)被视为物理属性,而其他属性则是逻辑属性(偏移)。这实质上要求 Web 开发人员了解或计算缩放状态。在 IE8 版本中,所有属性都是合乎逻辑的。
【问题讨论】:
另见***.com/questions/1713771/… 【参考方案1】:你可以使用:
var b = document.body.getBoundingClientRect();
alert((b.right - b.left)/document.body.clientWidth);
非常感谢@niclasnorgren!
【讨论】:
【参考方案2】:另外,如果您需要在 IE 8 中进行检查,您可以使用 window.screen.deviceXDPI 和 window.screen.deviceYDPI。默认为 96 dpi,如果放大,数字会更大(放大 150% 时为 144)
【讨论】:
谢谢,这正是我需要找到“缩放比例”:-) window.screen.deviceXDPI 在 IE9 的 IE8、IE7 仿真模式下可靠工作。 getBoundingClientRect() 方法在所有缩放模式下返回 100%。 请注意 screen.deviceXDPI 仅适用于 IE,不适用于 Chrome。 FWIW,注意window.screen.deviceXDPI
独立于 Windows 显示设置 DPI; IE8 中的 100% 始终为 96 dpi。 window.screen.logicalXDPI
似乎也不受显示设置的影响,因此简单地比较两者可能是一种很好的检测方法。【参考方案3】:
接受的答案有一个小的语法错误(正文而不是 document.body)。这似乎也可以解决问题。
var rect = document.body.getBoundingClientRect();
var zoomLevel = Math.round((rect.right-rect.left)/document.body.clientWidth * 100);
【讨论】:
【参考方案4】:我已在另一篇文章中发布了解决方案,您可以在此处获取。这也适用于 IE7。
Auto-detect a screen resolution and change browser zoom with javascript?
This will help to detect browser zoom tested on all browser
<script>
window.utility = function(utility)
utility.screen =
rtime : new Date(1, 1, 2000, 12,00,00),
timeout : false,
delta : 200
;
utility.getBrowser = function()
var $b = $.browser;
$.extend(utility.screen,$.browser);
utility.screen.isZoomed = false;
var screen = utility.screen;
screen.zoomf = screen.zoom = 1;
screen.width = window.screen.width;
screen.height = window.screen.height;
if($b.mozilla) //FOR MOZILLA
screen.isZoomed = window.matchMedia('(max--moz-device-pixel-ratio:0.99), (min--moz-device-pixel-ratio:1.01)').matches;
else
if($b.chrome) //FOR CHROME
screen.zoom = (window.outerWidth - 8) / window.innerWidth;
screen.isZoomed = (screen.zoom < .98 || screen.zoom > 1.02)
else if($b.msie)//FOR IE7,IE8,IE9
var _screen = document.frames.screen;
screen.zoom = ((((_screen.deviceXDPI / _screen.systemXDPI) * 100 + 0.9).toFixed())/100);
screen.isZoomed = (screen.zoom < .98 || screen.zoom > 1.02);
if(screen.isZoomed) screen.zoomf = screen.zoom;
screen.width = window.screen.width*screen.zoomf;
screen.height = window.screen.height*screen.zoomf;
return utility.screen;
;
window.onresize = function(e)
utility.screen.rtime = new Date();
if (utility.screen.timeout === false)
utility.screen.timeout = true;
setTimeout(window.resizeend, utility.screen.delta);
;
window.resizeend = function()
if (new Date() - utility.screen.rtime < utility.screen.delta)
setTimeout(window.resizeend, utility.screen.delta);
else
utility.screen.timeout = false;
utility.screen = utility.getBrowser();
if(window.onresizeend) window.onresizeend (utility.screen);
if(utility.onResize) utility.onResize(utility.screen);
;
window.onresizeend = function(screen)
if(screen.isZoomed)
$('body').text('zoom is not 100%');
else
$('body').text('zoom is 100% & browser resolution is'+[screen.width+'X'+screen.height]);
;
$(document).ready(function()
window.onresize();
);
return utility;
();
</script>
Demo
【讨论】:
以上是关于如何在 Internet Explorer 7 中获得缩放级别? (javascript)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows Phone 7 上调试 Internet Explorer?
在同一台计算机上运行 Internet Explorer 6、Internet Explorer 7 和 Internet Explorer 8
在 Internet Explorer 7 中打开多个页面的 Windows 控制台命令
使用百分比宽度进行布局时如何修复 Internet Explorer 7 错误?