2012-07-27 45 views
1

我應該以這樣一個事實開頭:事實上,我幾乎不瞭解JavaScript,除了非常罕見的情況之外,我沒有真正計劃使用它很多。所以請原諒我沒有嘗試過去了解更多,試圖爲自己解決這個問題。提示是否重新使用現有的彈出窗口或創建一個新的彈出窗口

現狀:

我經常喜歡使用彈出式視窗瀏覽器窗口。要做到這一點我創建了我的瀏覽器書籤包含這一小片的Javascript我從什麼地方抄 - 我不記得在哪裏 - 和調整,以適應我的屏幕:

javascript:%20var%20WindowPopup%20=%20window.open(window.location.href,'PopUp','left=1150,top=830,width=660,height=410,scrollbars=yes,location=no,status=no'); 

問題:

就目前情況而言,當存在彈出式窗口並且我再次選擇書籤時,如果我在同一個站點上,則會重新使用相同的彈出式窗口,否則將會創建一個新的彈出式窗口。但有很多場合我想重寫這種默認行爲。

三個Qustions:

  1. 我怎麼能強迫popouts總是在新窗口中打開?

  2. 如何強制彈出窗口始終重新使用現有的窗口?

  3. 結合前面兩個選項:是否可以檢測是否存在彈出窗口並提示我是否要重新使用它或打開新窗口?

您的幫助將不勝感激。

回答

1

小書籤中的字符串「PopUp」是您的彈出窗口的名稱。如果使用相同的名稱創建另一個彈出窗口,則已打開的窗口將被重用。
如果你想解決這個問題,你必須每次創建一個具有唯一名稱的彈出窗口。

以下書籤代碼將時間戳附加到彈出窗口中創建一個唯一的名稱的名稱:

javascript:%20var%20WindowPopup%20=%20window.open(window.location.href,'PopUp'+Date.now(),'left=1150,top=830,width=660,height=410,scrollbars=yes,location=no,status=no'); 

這應該工作,除非你一毫秒內打開多個彈出窗口。

+0

謝謝Max。這很好,並回答我的第一個問題 - 這對我來說是最重要的。你能解釋爲什麼用我原來的代碼,第二個窗口打開,如果我選擇書籤從第一個不同的網站?那*行爲可以被覆蓋嗎?我對第三個問題沒有太多的理由,因爲如果有必要,我可以輕鬆地擁有兩個單獨的書籤。 – Antagony 2012-07-27 12:52:21

+1

瀏覽器可能爲每個站點保留一個單獨的窗口列表。否則example.com可能會更改來自somesite.com的彈出窗口的內容,前提是它們共享相同的彈出窗口名稱。這不是期望的行爲。這就是爲什麼您的書籤在另一個網站上生成新窗口的原因。在我看來,這不能被忽略。 – 2012-07-27 13:33:26

+1

要提示詢問是創建一個新的彈出框還是回收一個現有的彈出框,您將不得不使用'prompt'函數並創建一個新的彈出式名稱或使用基於'prompt'返回值的前一個名稱。而且您還必須將當前的彈出式名稱存儲在不會被覆蓋的地方。這很複雜,可能是一團糟。擁有2個獨立的書籤小組更容易,每次都可以節省點擊時間。 – 2012-07-27 13:39:22