如何级联JavaScript卸载到子窗口

How to cascade JavaScript unloads to child windows?

本文关键字:卸载 窗口 JavaScript 何级联 级联      更新时间:2023-09-26

我想卸载依赖的弹出窗口时,主窗口关闭。主窗口:

        var dependentWindows = [];
        function closeDependents(){
            dependentWindows.forEach(function(dependent) {
                dependent.close();
            })
            dependentWindows = [];
        }
        function addDependent(dependent){
            if(dependentWindows.indexOf(dependent) < 0) {
                dependentWindows.push(dependent);}
        }
        function removeDependent(dependent){
            var position = dependentWindows.indexOf(dependent);
            if(position > 0) {
                dependentWindows.splice(position,1);}
        }

        Event.observe(window,"unload",closeDependents);

依赖的弹出窗口:

        function addDependent(dependent){
            window.opener.addDependent(dependent);
        }
        function removeDependent(dependent){
            window.opener.removeDependent(dependent);
        }
        Event.observe(window, "load", (function() {addDependent(window);});
        Event.observe(window, "unload", (function() {removeDependent(window);});

这些都不开火....?

我想在主窗口关闭时卸载相关的弹出窗口

一个简单和最简单的解决方案可能是在每个子窗口中包含一个小脚本,它将定期轮询以查看其opener窗口是否仍然存活。

像这样:

setInterval(checkIfOrphaned, 2000);
function checkIfOrphaned() {
    if (!window.opener || (window.opener == 'null') || (window.opener.closed)) {
        window.close();
    }
}