我們有一個客戶要求讓我難堪,令人尷尬。嘗試重複使用彈出式窗口時出現奇怪的行爲
客戶端有一組需要在彈出窗口中打開的鏈接 - 如果您單擊任何鏈接,它應該重複使用相同的彈出窗口。我覺得很容易,所以我把這樣的東西扔在一起:
<html> <head> <title>Test</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript"> var popupWin = null; function openWindow(url) { if (popupWin == null) { popupWin = window.open(url,'p2p',''); } else { if (!popupWin.closed) { popupWin.location.href = url; } else { popupWin = window.open(url,'p2p',''); } } popupWin.focus(); } </script> </head> <body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" bgcolor="#ffffff"> <ul> <li><a href="http://www.google.com" target="p2p" onclick="openWindow(this.href);return false;">Google</a></li> <li><a href="http://www.facebook.com" target="p2p" onclick="openWindow(this.href);return false;">FB</a></li> <li><a href="http://www.apple.com" target="p2p" onclick="openWindow(this.href);return false;">Apple</a></li> <li><a href="http://www.espn.com" target="p2p" onclick="openWindow(this.href);return false;">ESPN</a></li> </ul> </body> </html>
如果你把它放到一個html文件中,所有的行爲都如預期的那樣。
我的問題是,當我使用按他們的要求客戶的內部網網址,我看到的行爲如下:
點擊彈出的鏈接之一(彈出鏈接在新窗口中打開)
單擊另一個彈出的鏈接(鏈接替換第一彈出打開的頁面)
關閉彈出窗口。
點擊彈出的鏈接之一(並不重要,在新彈出的窗口 預期打開)
單擊另一個彈出鏈接(彈出一個新彈出窗口打開,不重複使用彈出窗口如預期)
奇怪的是,如果我通過Firebug的JavaScript代碼步驟,它正確地到達if語句,它確定了彈出窗口存在,並且是分支沒有關閉(所以應該重用d),但行代碼:
popupWin.location.href = url;
結束了由於某種原因打開一個新的窗口。
那麼,有什麼想法發生了什麼?我猜想客戶想讓我彈出的頁面上有些奇怪的東西是以某種神祕的方式搞砸了,但我無法弄清楚它是什麼。希望我能提供給你的鏈接,但不幸的是它們是私人的。
非常感謝您的幫助。
Mustafa
爲您的頁面添加測試鏈接可能會很有趣。該鏈接將運行一個腳本,以顯示一些警報框,其值爲popupWin,popupWin.location.href和popupWin.closed。點擊常規鏈接之前和之後的點擊測試鏈接,彈出窗口打開並關閉之後。也許會出現一條線索。 – Ray 2010-02-12 17:08:52