如何儘量避免問題?

我們需要做的就是確定一些彈出視窗按照道德規範使用的金規則:

     確保腳本不可用的時候引發鏈結可以適當的降級,

     一定要顯示狀態欄,

     允許內容可以滾動查看:無論是視窗大小調整還是允許捲軸顯示,或者兩者同時具備

     不要打開大小超過640×480的視窗

通過限制彈出視窗的大小,你就可以保證彈出視窗比用戶的正常打開視窗要小,這就讓用戶意識到自己打開的是一個新的視窗。

解決方法

下面是根據上面的基本規則規定的一個彈出視窗: 

除了規定視窗的大小,上面的腳本還拒絕創建內容可以滾動的彈出視窗,如果你不詳細規定“scroll”“resize”或者“both”,默認的設置是both 

         Ternary Operator

這個腳本使用了ternary operator例對每一個溢出的選項進行評價,ternary operator使用?和:來區分一個評價的兩種可能的結果,它的作用與一對ifelse的作用相類似。看下面的一段編碼:


這段編碼類似於下麵的:


圓括號不是必需的,但是你會發現使用了圓括號讀起來更加的方便。

一旦你將彈出視窗的功能確定了,你可以通過多種方式彈出這個視窗。比如,你可以使用常規的鏈結:


如果腳本不可用,有了上面的規定之後它就會跟其他鏈結一樣,但是如果腳本可用,那麼腳本就可以引發點擊並且讓那個彈出視窗彈出。Handler返回的值根據視窗實際上是否被打開而有所不同,阻止了彈出視窗的流覽器會像常規那樣跟隨鏈結;


總的來說,如果你有一個腳本要求創建視窗,你可以直接通過URLcall makePopup功能:


如果你需要在之後的腳本中關閉視窗,你可以通過close的方法做到:


討論

Window.open的方法可能會有一些論點——除了URL和視窗的名稱——詳細說明了視窗是否應該有特殊的裝飾,比如功能表欄,工具欄或者位址欄,這些爭論隨著逗號分隔的字串而轉到window.open的第三個論點:


makePopup功能中,功能表欄(menubar)、工具欄(toolbar)以及位置(location)都沒有,因為這些元素對於彈出視窗來說很少會用到——這些都是導航工具。彈出視窗最常用於一頁的分界,或者那些歷史導航不能用的情況,或者空白網站的登錄視窗。

如果必要的話,你可以改變那些選項,但是狀態選項應該永遠是選擇yes,因為如果你關閉了這個選項會使一些功能不可用。(我知道,我之前曾經提起過,但是我現在還再說一遍,因為這點很重要!)

可調節(resizable)選項可能不會有任何的效果——在有些流覽器中是這樣的,無論是作為一種設計或者是做為用戶設置的選項,不可能創建不可調節大小的視窗,即使你這個選項選擇的是:no。事實上,在Opera 8中,是不能創建用戶自定義大小視窗的。這個規定本身並不特別的突出,但是它證明了一點,就是創建視窗的各種選項並不是都可用的。

一旦一個視窗打開之後,你可以使用focus的方法來讓這個視窗成為中心焦點,這並不是總是需要的——通常,都是默認的——但是,當你同時在處理多個視窗的時候,這種技巧還是有用的。


或者,你可以打開一個彈出視窗,但是原來的那個視窗仍然是主要的視窗(因此就要求一個所謂的popunder),你可以通過blur的方法將主要視窗從一個視窗轉向另一個視窗:


但是,那樣的話,你不知道下一個focus的視窗會是哪一個,所以,重新focus原來的那個視窗是最可靠的:




推薦給同仁

Tell a Friend 

您想要瞭解更多的免費小竅門以便提升你的網站排名嗎?
請馬上聯繫我們網站管理員:
MSN: chenlinwu@cmmail.com 
Email: info@rank-ad.com