Javascript:如何使用第三方获取浏览器缩放级别[重复]

Posted

技术标签:

【中文标题】Javascript:如何使用第三方获取浏览器缩放级别[重复]【英文标题】:Javascript: How to get Browser Zoom level using third party [duplicate] 【发布时间】:2013-04-11 17:37:51 【问题描述】:

如何在所有已知浏览器中获取浏览器缩放级别? 这是How to detect page zoom level in all modern browsers? 的新解决方法

想法是使用flash或html5 Canvas来寻找解决方案。

目前找到了一种使用闪存的解决方案。

【问题讨论】:

【参考方案1】:

您需要像这样使用 javascript 桥创建一个 flash 文件:

[SWF(width='100',height='100')]
public class SizeHack extends Sprite

    public function SizeHack()
    
        if(stage)
            onAddToStage();
        
        else
            addEventListener(Event.ADDED_TO_STAGE, onAddToStage);
        
    

    protected function onAddToStage(event:Event = null):void
    
        removeEventListener(Event.ADDED_TO_STAGE, onAddToStage);

        // security settings to allow scripting between domains
        Security.allowDomain("*");
        Security.allowInsecureDomain("*");

        // register to javascript
        ExternalInterface.addCallback("getSize", onSizeRequet);

        // stage scale mode must be noscale
        stage.scaleMode = StageScaleMode.NO_SCALE;
    

    private function onSizeRequet():Number
    
        if(!stage)
            return 0;
        
        return stage.stageHeight;
    

然后在你的 JavaScript 中:

<script type="text/javascript">
    swfobject.registerObject("FlashResizer", "10.0.0");

    function getBrowserZoom()
    
        return swfobject.getObjectById("FlashResizer")
            .getSize();
    
</script>

<div id="flashResizerDiv" style="position: absolute; display: block; height: 100px; width: 100%; top: 0; left: 0;">
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"   id="FlashResizer">
        <param name="movie" value="resizer.swf" />
        <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="resizer.swf"  >
            <!--<![endif]-->
            <a href="http://www.adobe.com/go/getflashplayer">
                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"  />
            </a>
            <!--[if !IE]>-->
            </object>
        <!--<![endif]-->
    </object>
</div>

现在当您调用getBrowserZoom() 时,您将获得浏览器的精确缩放。

【讨论】:

获得未缩放的高度而不是浏览器缩放级别。你需要做更多的数学运算。你的其余代码在哪里?

以上是关于Javascript:如何使用第三方获取浏览器缩放级别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript 按钮控制浏览器缩放

javascript,获取使用包含属性缩放的背景大小

使用 Javascript/Jquery 在桌面 Web 浏览器中禁用页面缩放 [重复]

C#中webbrowser怎么禁用默认调用的IE浏览器缩放功能

javascript检测浏览器的缩放状态实现代码 是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放)

如何在固定的canvas画布内缩放