Window A opens window B
Window A opens window C
On Window C (after user action) I need Window B refreshed.
一些更多的解釋: 是的。窗口A是主日曆。窗口B手動打開並且較小並顯示關於日曆的統計信息(窗口A)從另一個彈出窗口的JavaScript刷新彈出
當用戶單擊窗口A中的日曆事件時,窗口C打開。當用戶在窗口C上更改信息時,窗口B(統計信息)需要更新。
Window A opens window B
Window A opens window C
On Window C (after user action) I need Window B refreshed.
一些更多的解釋: 是的。窗口A是主日曆。窗口B手動打開並且較小並顯示關於日曆的統計信息(窗口A)從另一個彈出窗口的JavaScript刷新彈出
當用戶單擊窗口A中的日曆事件時,窗口C打開。當用戶在窗口C上更改信息時,窗口B(統計信息)需要更新。
我不得不提醒你,你正在努力實現是不是一個好的做法的第一位。
許多瀏覽器正在打開新標籤而不是新窗口,這會影響window.opener
的可用性。儘管這在很大程度上取決於瀏覽器設置。
所以,首先你應該測試一下,看看你的代碼真的是打開新的窗口,而不是新的選項卡。現在
,在a.html你應該有這樣的:
var windowB=window.open("b.html");
var windowC=window.open("c.html");
在c.html你應該有這樣的:
function openNewPage() {
window.opener.windowB.location.reload(true);
}
,並呼籲用戶交互openNewPage()函數。
謝謝。所以我不知道如果瀏覽器打開它作爲製表符,window.opener將爲空。這真的是打擊。有沒有辦法解決?如果不是的話,我唯一的解決方案就是不斷更新窗口b在一個我不想做的定時器上。 – user713813 2011-06-08 18:23:22
所以這裏是超級簡單的解決方案。 in window A window.open(「blah.aspx」,「windowB」); 然後再在窗口中再次執行c window.open(「blah.aspx」,「windowB」); – user713813 2011-06-08 23:38:00
您需要爲彼此設置子窗口彼此的引用。這是一個簡單的演示。
var b= window.open('');
var c= window.open('');
b.test=function() {
alert('Function in window B');
};
c.test=function() {
b.test();
return false;
};
$(b.document).find('body').append('<div>Window B. <a href="#" onclick="return test();">Click here</a></div>');
$(c.document).find('body').append('<div>Window C. <a href="#" onclick="return test();">Click here</a></div>');
請求jquery嗎? – user713813 2011-06-08 19:29:37
我只使用jquery設置示例並填充創建的窗口。除此之外沒有jquery。 – 2011-06-08 19:33:26
在你的例子中,我看不到窗口c如何重新加載窗口b – user713813 2011-06-08 20:36:31
你真的需要打開多個窗口,可能會混淆你的用戶嗎?你可以使用標籤,模式窗口或其他用戶友好的方法嗎? – 2011-06-08 17:12:04
是的。窗口A是主日曆。窗口B較小並顯示關於窗口A的統計信息。窗口C是顯示剛剛單擊的日曆事件的詳細信息的UI。當用戶在窗口c上更改信息時,窗口b(統計信息)必須更改。 – user713813 2011-06-08 17:18:34
我回答然後刪除它 - 你改變了這個問題說「我需要刷新窗口B」(而不是A)還是我瘋了? – 2011-06-08 17:23:08