簡體   English   中英

從Javascript關閉子窗口

[英]Closing children windows from Javascript

我一直在尋找解決問題的方法,只能找到一些難題,而無法將它們聯系起來。 我有一個可以打開其他多個窗口的窗口(它本身是主窗口的子窗口)。 我希望在關閉父級時關閉子級窗口,聽起來很簡單吧?

這是一個難題,我的父窗口在打開子窗口時會進行回發,因此我保留的任何句柄數組(也是對象)都不會持久。 我已經研究了對該數組進行序列化和反序列化並將其存儲在隱藏字段中,但這似乎不是最佳解決方案。 我也無法訪問打開窗口的父窗口。

除了Javascript,服務器端代碼還用C#編寫,我使用的是asp.net。 有什么合理的解決方案嗎? 我還應該提到,我正在使用的代碼是在很久以前由多個不同的人編寫的,因此我想對其進行添加,而不是更改大多數代碼的工作方式。

最后,我知道在這里發布代碼通常是一個好主意,但是我只是使用var win = window.open來執行窗口打開任務。

謝謝。

關於什么

var wins = [];
function newChildWindow(...) {
    wins.push(window.open(...));
}
window.onuload = function() {
    for (var i=0; i<wins.length; i++)
        if (!wins[i].closed)
            wins[i].close();
};

好的,然后我看到解決該問題的3種方法:

  • 不要使用多個瀏覽器窗口,而是設置頁面樣式以顯示所有對話框; 正如@Gats建議的那樣。 好的,如果您希望在子窗口中導航時持久輸入父“ windows”,這會在某種程度上限制您。
  • 不要執行刷新回發以卸載父級。 改用Ajax將數據發送到應用程序服務器
  • 您不能存儲(窗口)對象,只能存儲字符串。 當打開一個窗口時,可以給它一個“目標”名稱,任何其他具有相同目標(名稱)的window.open都將使用已經打開的窗口。 這樣一來,您就可以引用沒有打開自己的窗口,然后關閉它們。 參見https://stackoverflow.com/a/563478/1048572

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM