您当前的位置:首页 > 网站建设笔记 >

javascript 浏览器窗口位置

来源:JavaScript 高级程序设计0

用来确定和修改window对象位置的属性和方法有很多。IE、Safari、Opera和Chrome都提供了screenLeft和screenTop属性,分别用于表示窗口相对于屏幕左边和上边的位置。Firefox则在screenX和screenY属性中提供相同的窗口位置信息,Safari和Chrome也同时支持这两个属性。Opera虽然也支持screenX和screenY属性,但与screenLeft和screenTop属性并不对应,因此建议大家不要在Opera中使用它们。使用下列代码可以跨浏览器取得窗口左边和上边的位置。

<button name="testButton1">点击按钮执行以上代码查看结果</button>
<script type="text/javascript">
document.getElementsByName("testButton1")[0].onclick=function(){
	var leftPos = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX;
	var topPos = (typeof window.screenTop == "number") ? window.screenTop : window.screenY;
	alert("当前浏览器窗口相对于屏幕左边和上边的位置分别为: "+leftPos+" "+topPos);
}
</script>

这个例子运用二元操作符首先确定screenLeft和screenTop属性是否存在,如果是(在IE、Safari、Opera和Chrome中),则取得这两个属性的值。如果不存在(在Firefox中),则取得screenX和screenY的值。在使用这些值的过程中,还必须注意一些小问题。在IE、Opera中,screenLeft和screenTop中保存的是从屏幕左边和上边到由window对象表示的页面可见区域的距离。换句话说,如果window对象是最外层对象,而且浏览器窗口紧贴屏幕最上端——即y轴坐标为0,那么screenTop的值就是位于页面可见区域上方的浏览器工具栏的像素高度。但是,在Chrome、Firefox和Safari中,screenY或screenTop中保存的是整个浏览器窗口相对于屏幕的坐标值,即在窗口的y轴坐标为0时返回0。

更让人捉摸不透是,Firefox、Safari和Chrome始终返回页面中每个框架的top.screenX和top.screenY值。即使在页面由于被设置了外边距而发生偏移的情况下,相对于window对象使用screenX和screenY每次也都会返回相同的值。而IE和Opera则会给出框架相对于屏幕边界的精确坐标值。

最终结果,就是无法在跨浏览器的条件下取得窗口左边和上边的精确坐标值。然而,使用moveTo()和moveBy()方法倒是有可能将窗口精确地移动到一个新位置。这两个方法都接收两个参数,其中moveTo()接收的是新位置的x和y坐标值,而moveBy()接收的是在水平和垂直方向上移动的像素数。下面来看几个例子:

<button onclick="window.moveTo(0,0);return false;">将窗口移动到屏幕左上角</button>
<button onclick="window.moveBy(0,100);return false;">将窗口向下移动100像素</button>
<button onclick="window.moveTo(200,300);return false;">将窗口移动到(200,300)</button>
<button onclick="window.moveBy(-50,0);return false;">将窗口向左移动50像素</button>

需要注意的是,这两个方法可能会被浏览器禁用,而且,在Opera和IE7(及更高版本)中默认就是禁用的。另外,这两个方法都不适用于框架,只能对最外层的window对象使用。

建站咨询

在线咨询真诚为您提供专业解答服务

咨询热线

137 1731 25507×24小时服务热线

微信交流

二维码终于等到你,还好我没放弃
返回顶部