如何在IE11中使用window.screenLeft,具有子框架和缩放功能

时间:2017-01-19 13:24:07

标签: javascript html internet-explorer internet-explorer-11

如果你在“主框架”中,

window.screenLeft会返回正确的值,无论你使用什么缩放。

通过正确的值,我的意思是将它们乘以window.devicePixelRatio,您成功获得了相对于设备屏幕呈现文档的视图的屏幕像素的X偏移量。

当您处于子框架中时(使用<iframe>标签),当缩放为100%时,一切正常。

但是,如果您处于子框架中,并且缩放率不是100%,那么返回的值就没有意义了。

示例,确定(子框架,缩放100%) enter image description here

示例,KO(子框架,缩放150%) enter image description here

来源1:主框架:

<html>
    <head>
        <title>SO</title>
    </head>

    <table>
        <tr>
            <td>
                Text in the Main Frame
            </td>
            <td>
                <iframe width=600 height=450 name="SomeFrame" src="src2.html"></iframe>
            </td>
        </tr>
    </table>
</html>

来源2:子框架

<html>
    <head>
        <title>SO (frame)</title>
        <script>
            function DoTheCalc() {

                document.getElementById( "W_L" ).value = window.screenLeft;
                document.getElementById( "W_T" ).value = window.screenTop;

                document.getElementById( "P_R" ).value = window.devicePixelRatio;

                document.getElementById( "W_X" ).value = window.screenLeft * window.devicePixelRatio;
                document.getElementById( "W_Y" ).value = window.screenTop * window.devicePixelRatio;

                return;
            }
        </script>
    </head>
    <body bgcolor='green'>
        <input type="button" id="CALC_BUT" value="Compute" onclick="DoTheCalc();"/>
        <br/>
        <label>
            screenLeft
            <input id="W_L"/>
        </label><br/>
        <label>
            screenTop
            <input id="W_T"/>
        </label>
        <br/>
        <label>
             Pixel Ratio 
            <input id="P_R"/>
        </label><br/>
        <label>
             Left, Zoom adjusted 
            <input id="W_X"/>
        </label><br/>
        <label>
             Top, Zoom adjusted
            <input id="W_Y"/>
        </label>
    <body>
</html>

0 个答案:

没有答案