2010-06-24 147 views
1

通常,當使用window.open打開窗口時,我可以通過使用window.opener()來訪問調用者窗口,是否可以在模態對話框(window.showModalDialog)中執行類似操作?我可以從ModalDialog窗口中獲得開啓器窗口嗎?

+0

相關:http://msdn.microsoft.com/en-us/library/ms536759.aspx – 2010-06-24 11:39:15

+1

答案在鏈接中。我現在無法制定出完整的答案 – 2010-06-24 11:59:01

回答

4

正如你可以在comment的MSDN網頁上了解showModalDialog(感謝佩卡),

[T]他window.opener方法返回 null,而不是向 打開的窗口中的引用。所以你不能刷新 打開的窗口與 window.opener.location.refresh() (如果,例如,你可以使用 showModalDialog打開編輯對話框 )。如果你想要做的是 刷新打開的窗口中每次 的ModalDialog關閉,易於 (包括window.location.refresh() 調用 showModalDialog後右)。但是,如果您只有 想要刷新 中的開放窗口,某些情況下(例如,開放 窗口需要一段時間才能刷新),那麼您可以通過傳遞 dialogArgument來做到這一點。

更聰明(我認爲)的方法是 通過窗口參考本身作爲dialogArgument。在撥打 的電話窗口中,使用 window.showModalDialog('newurl.asp', window)。在被調用的對話框 中檢索參考var window_opener = window.dialogArguments。您可以使用 存儲在 變量window_opener中的窗口引用代替 window.opener,以便從被調用的對話框中刷新調用窗口 。

請注意,Firefox和Chrome(適用於 實例)似乎不具備這些 限制,並出現治療 ModalDialogs更像普通 窗口。請記住,如果您使用這些瀏覽器之一進行 測試,則需要 ,但打算讓您的應用程序在 所有瀏覽器中運行。

+0

非常好,謝謝 – Rubans 2010-06-24 16:00:06

相關問題