如何儘量避免問題?
我們需要做的就是確定一些彈出視窗按照道德規範使用的金規則:
□ 確保腳本不可用的時候引發鏈結可以適當的降級,
□ 一定要顯示狀態欄,
□ 允許內容可以滾動查看:無論是視窗大小調整還是允許捲軸顯示,或者兩者同時具備
□ 不要打開大小超過640×480的視窗
通過限制彈出視窗的大小,你就可以保證彈出視窗比用戶的正常打開視窗要小,這就讓用戶意識到自己打開的是一個新的視窗。
解決方法
下面是根據上面的基本規則規定的一個彈出視窗:
除了規定視窗的大小,上面的腳本還拒絕創建內容可以滾動的彈出視窗,如果你不詳細規定“scroll”“resize”或者“both”,默認的設置是both。
Ternary Operator
這個腳本使用了ternary operator例對每一個溢出的選項進行評價,ternary operator使用?和:來區分一個評價的兩種可能的結果,它的作用與一對if…else的作用相類似。看下面的一段編碼:
這段編碼類似於下麵的:
圓括號不是必需的,但是你會發現使用了圓括號讀起來更加的方便。
一旦你將彈出視窗的功能確定了,你可以通過多種方式彈出這個視窗。比如,你可以使用常規的鏈結:
如果腳本不可用,有了上面的規定之後它就會跟其他鏈結一樣,但是如果腳本可用,那麼腳本就可以引發點擊並且讓那個彈出視窗彈出。Handler返回的值根據視窗實際上是否被打開而有所不同,阻止了彈出視窗的流覽器會像常規那樣跟隨鏈結;
總的來說,如果你有一個腳本要求創建視窗,你可以直接通過URL來call makePopup功能:
如果你需要在之後的腳本中關閉視窗,你可以通過close的方法做到:
討論
Window.open的方法可能會有一些論點——除了URL和視窗的名稱——詳細說明了視窗是否應該有特殊的裝飾,比如功能表欄,工具欄或者位址欄,這些爭論隨著逗號分隔的字串而轉到window.open的第三個論點:
在makePopup功能中,功能表欄(menubar)、工具欄(toolbar)以及位置(location)都沒有,因為這些元素對於彈出視窗來說很少會用到——這些都是導航工具。彈出視窗最常用於一頁的分界,或者那些歷史導航不能用的情況,或者空白網站的登錄視窗。
如果必要的話,你可以改變那些選項,但是狀態選項應該永遠是選擇yes,因為如果你關閉了這個選項會使一些功能不可用。(我知道,我之前曾經提起過,但是我現在還再說一遍,因為這點很重要!)
可調節(resizable)選項可能不會有任何的效果——在有些流覽器中是這樣的,無論是作為一種設計或者是做為用戶設置的選項,不可能創建不可調節大小的視窗,即使你這個選項選擇的是:no。事實上,在Opera 8中,是不能創建用戶自定義大小視窗的。這個規定本身並不特別的突出,但是它證明了一點,就是創建視窗的各種選項並不是都可用的。
一旦一個視窗打開之後,你可以使用focus的方法來讓這個視窗成為中心焦點,這並不是總是需要的——通常,都是默認的——但是,當你同時在處理多個視窗的時候,這種技巧還是有用的。
或者,你可以打開一個彈出視窗,但是原來的那個視窗仍然是主要的視窗(因此就要求一個所謂的popunder),你可以通過blur的方法將主要視窗從一個視窗轉向另一個視窗:
但是,那樣的話,你不知道下一個focus的視窗會是哪一個,所以,重新focus原來的那個視窗是最可靠的:
推薦給同仁
您想要瞭解更多的免費小竅門以便提升你的網站排名嗎?
請馬上聯繫我們網站管理員:
MSN: chenlinwu@cmmail.com
Email: info@rank-ad.com