JavaScript視窗功能指南之發揮視窗特徵 (轉)

worldblog發表於2007-12-04
JavaScript視窗功能指南之發揮視窗特徵 (轉)[@more@]script視窗功能指南之發揮視窗特徵
(作者:聽風編譯 2001年01月19日 11:35)

  在前面一節中,我們全面接觸了提供的視窗特徵。許多這些特徵是基於特殊的,就是說它們不可能同時在Inte Explorer和Navigator中工作。在這一節中,我們將探索幾個有趣的方面,以及一些有用的技巧。

指定視窗尺度
  我們使用引數height、 width、 innerHeight 以及 innerWidth來定義新視窗的尺度。Internet Explorer支援height和width,Navigator則使用innerHeight和innerWidth。Navigator也支援outerHeight和outerWidth特徵,它們指定了視窗外圍邊界的尺度,外圍邊界包括標題欄、捲軸以及其他操作元素。在Internet Explorer中,為達到同樣目的,我們使用height、width、innerHeight和innerWidth。每種瀏覽器都將忽略其他特徵,所以當建立新視窗時,就可以定義所有的4個。

  window.open("dimensions.html", "_blank", "height=150,innerHeight=150,width=200,innerWidth=200");

  如果在你的機器上有2種瀏覽器,你可以比較一下JavaScript的不同視窗尺度特徵。

開啟一個全螢幕視窗
  Internet Explorer支援fullscreen屬性,使用它可以建立一個覆蓋全屏的視窗,而不必考慮顯示器的實際尺寸。看看下面的例子:

  

  讓我們看看它是怎樣工作的。首先,我們給全域性變數str分配一個初始數值,它指定了新視窗位於螢幕的左上角。不要擔心這個字串,在本節稍候將解釋它的含義。下一個語句檢查瀏覽器是否支援screen。如果不支援,我們就使用resizable特徵從而可以手工地改變新視窗的大小,最終適應整個螢幕。但是如果瀏覽器是支援screen物件的,那麼就可以充分利用screen.vavilHeight和screen.vavilWidth來決定系統螢幕上工作區域的高度和寬度,包括任何系統元素,比如工作列。由於height、width、innerHeight以及innerWidth等特徵不能精確說明視窗邊界,所以必須要減去大概象素的數值。

  如果想充分利用瀏覽器的fullscreen特徵,僅僅加入下面的指令碼就可以:

  var str = "left=0,screenX=0,top=0,screenY=0,fullscreen";

  我們不需要檢查瀏覽器是否為Internet Explorer,因為當fullscreen特徵定義後,其他特徵就被忽略。

定義視窗座標
  我們將使用left、top、screenX和screenY引數來指定新視窗的座標。Internet Explorer支援left和top,Navigator則使用screenX和screenY。

  window.open("", "_blank", "left=20,screenX=20,top=40,screenY=40");

  記住,left應該總是與screenX一起定義,top與screenY一起定義。如果你使用過這些特徵,你會發現Navigator同樣支援left和top。然而,這是一個未公開的操作,所以你不要依賴於此(因為未來的Navigator版本也許不再支援它)。而且,如果對於left和screenX指定了不同的數值,Navigator將使用分配給screenX的數值。同樣,如果指定了screenY,Navigator將忽視top。

  記住,這些特徵都是以象素為單位的,並且以螢幕的左上角為基點。即使你在中window.open()方法,指定的值依然以螢幕的邊界為準。

  開啟一個居中的視窗

  現在你瞭解瞭如何放置一個新視窗,下面再新增一些演算法。下面的指令碼程式開啟一個居中的視窗:

  

  這段指令碼程式非常類似於全螢幕視窗的指令碼程式。它使用了screen.availHeight和screen.availWidth屬性,同時加上新視窗的期待尺寸,最終計算出視窗左上角的精確位置。如果你很難理解(aw-width)/2的含義,請看看下面的算式:

  (aw / 2) - (width / 2)

  如你所見,它們是一樣的,就是從螢幕的中央減去視窗寬度的一半。同樣的演算法應用於視窗的垂直座標。

向後相容的連結
  當我們編寫一個指令碼程式時,考慮到那些不能使用JavaScript的使用者是非常重要的,這常常發生在使用者遮蔽掉瀏覽器中JavaScript功能的情況下。當這種情況發生時,我們應該仍然能夠使用HTML裝載一個視窗。看看下面的連結:

  Doc JavaScript

  這開啟了一個名為win的視窗,在其中裝載定義的URL。下面的連結使用了JavaScript完成同樣的目的:

  Doc JavaScript

  基於JavaScript的連結建立了一個簡單的視窗,它有一個狀態列,但是不包括其他預設元素(比如工具欄)。然而前面的HTML連結開啟的視窗是一個預設的瀏覽器視窗。2種方法實現了同樣的目的。使用JavaScript,我們可以控制新視窗的外觀,但是如果瀏覽器不支援JavaScript,這樣的連結就沒有用了。所以,我們合併這些連結:

  Doc JavaScript

  如果JavaScript是啟用的,在裝載HREF屬性定義的URL前,瀏覽器就onClick事件處理程式。由於這個事件處理程式返回false,瀏覽器將忽略HREF屬性,就好像使用者根本沒有點選連結。事實上,語句return false簡單地中止了“點選”。如果瀏覽器不支援JavaScript,那麼就不會執行onClick事件處理程式,因此,象其他HTML連結一樣,指定的URL被裝載。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988296/,如需轉載,請註明出處,否則將追究法律責任。

相關文章