2013-04-07 106 views
0

很難想出一個標題,我的道歉。當彈出窗口處於活動狀態時,啓動時自動加載頁面到彈出窗口

問題是:由於現代網頁瀏覽器禁用彈出式窗口,因此我需要解決方法。

當訪問者訪問網站時,他們會提示按下按鈕。

w = window.open('/audio/audioplayer.php?id='+audioId, 'audioplayer', params); 

現在,彈出打開時我會當訪問者瀏覽彈出加載特定信息的頁面,如:一旦按下按鈕,彈出窗口與下面的代碼推出基於他們所在的任何頁面。

我不知道這是可能的,或者我怎麼能做到這一點(檢查彈出窗口是打開的,如果它是加載信息,而如果它不重新顯示該按鈕)

回答

0

我不認爲有可能檢測彈出窗口未打開的位置。

你有沒有想過使用對話框?而不是彈出窗口?

0

window.open返回一個windowObjectReference - 這是您可以與彈出窗口交談的唯一方法。特別是,您可以通過windowObjectReference.closed屬性判斷該窗口是否已關閉。而彈出窗口有一個window.opener屬性,它引用了父窗口。你可以使用兩者進行溝通。

但是,似乎你想保持頁面加載之間的這種溝通。你有幾個選擇:

  • 儘量保持窗口之間的鏈接儘可能長。問題是,當父窗口重新加載時,所有javascript變量都會重置,並且無法恢復對彈出窗口的引用 - 除非彈出窗口使用window.openerThis link顯示了這種方法,也是另一種框架。
    你可以認爲它既醜陋又聰明。但這並不完美。 (如果用戶在新鏈接中打開頁面,則不能執行任何操作)
  • 使用來自兩個主頁面和彈出頁面的ajax與服務器通信。當頂層頁面想要向彈出窗口發送消息時,它們向服務器啓動一個XMLHttpRequest,通知將消息留在「隊列」中的腳本。彈出頁面定期輪詢/長時間輪詢服務器與XHR太(或server sent events,我個人最喜歡),並相應地更新自己的內容。
    這可能比你想要的更加複雜/昂貴,但它也是最安全的解決方案。
  • 不要使用彈出窗口,就像建議的其他答案一樣。與position: fixed div可以得到一個類似的結果,並可能節省您的窗口之間的通信方法,但它也導致每個頁面有一個對話框,所以你需要問服務器,如果另一個對話的實例正在運行。不太確定其他同步方法是否可行(本地存儲?)
相關問題