window.screenLeft
会返回正确的值,无论你使用什么缩放。
通过正确的值,我的意思是将它们乘以window.devicePixelRatio
,您成功获得了相对于设备屏幕呈现文档的视图的屏幕像素的X偏移量。
当您处于子框架中时(使用<iframe>
标签),当缩放为100%时,一切正常。
但是,如果您处于子框架中,并且缩放率不是100%,那么返回的值就没有意义了。
来源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>