用來確定和修改window對象位置的屬性和方法有很多。IE. Safari、Opera和Chrome都提供了screenLeft和screenTop屬性,分別用于表示窗口相對于屏幕左邊和上邊的位置。Firefox則在screenX和screenY屬性中提供相同的窗口位置信息,Safari和Chrome也同時支持這兩個屬性。Opera雖然也支持screenX和screenY屬性,但與screenLeft和screenTop屬性并不對應(yīng),南昌網(wǎng)站設(shè)計公司技術(shù)人員在此建議大家不要在Opera中使用它們。使用下列代碼可以跨瀏覽器取得窗口左邊和上邊的位置:
var leftPos=(typeof window. screenLeft=="number”) ;
window. screenLeft :window. screenX;
var topPos= (typeof window.screenTop=="number”) ;
window. screenTop:window. screenY;
這個例子運用二元操作符首先確定screenLeft和screenTop屬性是否存在,如果是(在IE、Safari、Opera和Chrome中),則取得這兩個屬性的值。如果不存在(在Firefox中),則取得screenX和screenY的值。
在使用這些值的過程中,還必須注意一些小問題。在IE. Opera和Chrome中,screenLeft和screenTop中保存的是從屏幕左邊和上邊到由window對象表示的頁面可見區(qū)域的距離。換句話說,如果window
對象是最外層對象,而且瀏覽器窗口緊貼屏幕最上端——即y軸坐標(biāo)為0,那么screenTop的值就是位于頁面可見區(qū)域上方的瀏覽器工具欄的像素高度。但是,在Firefox和Safari中,screenTop中保存的是整個瀏覽器窗口相對于屏幕的坐標(biāo)值,即在窗口的y軸坐標(biāo)為0時返回0。
南昌網(wǎng)絡(luò)公司技術(shù)人覺得更讓人捉摸不透是,F(xiàn)irefox. Safari和Chrome始終返回頁面中每個框架的top.screenX和top.screenY值。即使在頁面由于被設(shè)置了外邊距而發(fā)生偏移的情況下,相對于window對象使用screenX和screenY每次也都會返回相同的值。而IE和Opera則會給出框架相對于屏幕邊界的精確坐標(biāo)值。
最終結(jié)果,就是無法在跨瀏覽器的條件下取得窗口左邊和上邊的精確坐標(biāo)值。然而,使用moveTo()和moveBy()方法倒是有可能將窗口精確地移動到一個新位置。這兩個方法都接收兩個參數(shù),其中moveTo()接收的是新位置的x和y坐標(biāo)值,而rmoveBy()接收的是在水平和垂直方向上移動的像素數(shù)。
下面來看幾個例子:
//將窗口移動到屏幕左上角
window.moveTo(O,0);
//將窗向下移動100像素
window.moveBy(0,100);
//將窗口移動到(200,300)
window.moveTo( 200,3 00);
//將窗口向左移動50像素
window. moveBy(-50.O);
需要注意的是,這兩個方法可能會被瀏覽器禁用;而且,在Opera和IE 7(及更高版本)中默認(rèn)就是禁用的。另外,這兩個方法都不適用于框架,只能對最外層的window對象使用。
本文僅限內(nèi)部技術(shù)人員學(xué)習(xí)交流,不得作于其他商業(yè)用途.文章出自:南昌網(wǎng)站建設(shè)公司-百恒網(wǎng)絡(luò) http://m.gimmickmag.com 如轉(zhuǎn)載請注明出處!