2013-05-31 197 views
0

打開另一個頁面我有一個創建與頁面B的窗口發送刷新請求在瀏覽器

網頁B詢問用戶一些DATAS,將它們插入數據庫頁A,然後自行關閉。 插入後,我試圖讓頁面A自動刷新(它可以是從A看到B已經關閉,或者由B本身在(或之後?)關閉之前觸發的功能)

如何可以我這樣做?

+0

可以通過JavaScript'window.onclose',不是嗎?或者你試圖通過PHP來做到這一點? – BlitZ

+0

嗯,也許,但我怎麼能這樣處理頁面A? (php或javascript都可以,編輯標籤) – user1722791

回答

2

JavaScript的window.open()返回的引用,打開的窗口的實例。你可以用它來建立onunload事件處理程序,如下所示:

var hWndB = window.open('somepage.php'), 
    hWndA = window.self; 

hWndB.onunload = function(){ hWndA.location.reload(); } 
+0

我結束了使用這個,最快和工作。 – user1722791

+0

@ user1722791祝您好運 – BlitZ

0

變 「A眼看B關閉」:

//winb is global variable 
winb=window.open(blah blah); //Existing: A opens B 

window.setTimeout(checkWinB,1000); 

function checkWinB() { 
    if (winb.closed()) refreshMySelf(); 
    else window.setTimeout(checkWinB,1000); 
} 

變 「B踢A」:

opener.rerfreshMySelf(); 
window.close() //Existing: B closes 

兩種變體需要refreshMySelf()功能刷新頁面。如何做到這一點取決於頁面的機制,但對於非AJAX頁面起點是

function refreshMySelf() { 
    location.reload(); 
} 
1

可以使用onunload事件和window.opener。例如。

window.addEventListener('unload', function() { 
    window.opener.location.reload(); 
}, false); 

或者你可以使用jQuery,所以你不會有任何跨瀏覽器兼容性問題:

$(window).on('unload', function() { 
    window.opener.location.reload(); 
}); 

也有一個名爲onbeforeunload另一個事件,你可能想看看。

編輯

對於較舊的瀏覽器,您可以使用@CORRUPT在評論中提供了破解:window.open() returns undefined or null on 2nd call

+0

'window.opener'在某些[***案件***]中不可靠(http://stackoverflow.com/questions/960293/window-open-returns-undefined-or-null-上第二個呼叫)。 – BlitZ

+0

謝謝。我已將您的鏈接添加到答案:) – lexmihaylov

相關問題