如何在关闭打开的窗口时运行Javascript代码?

如何在关闭打开的窗口时运行Javascript代码?,javascript,Javascript,当我关闭打开的窗口时,我想做一些事情(比如在控制台上打印hello world) 窗 橱窗 函数openwindow(){ 窗口打开(“https://www.google.com“,‘新窗口’, '滚动条=否,菜单栏=否,高度=600,宽度=800, 可调整大小=是,工具栏=否,状态=否'; } 正如你所看到的,我有一个按钮。当我点击这个按钮时,它会打开另一个窗口并在其中打开 所以,当我关闭这个新窗口时,我想运行一些代码,而无需打开进一步的对话框。如何实现它?弹出窗口没有任何可供您收听的关

当我关闭打开的窗口时,我想做一些事情(比如在控制台上打印hello world)


窗
橱窗
函数openwindow(){
窗口打开(“https://www.google.com“,‘新窗口’,
'滚动条=否,菜单栏=否,高度=600,宽度=800,
可调整大小=是,工具栏=否,状态=否';
}
正如你所看到的,我有一个按钮。当我点击这个按钮时,它会打开另一个窗口并在其中打开


所以,当我关闭这个新窗口时,我想运行一些代码,而无需打开进一步的对话框。如何实现它?

弹出窗口没有任何可供您收听的关闭事件,但当窗口关闭时,有一个关闭属性为
true
。您可以通过启动计时器和每秒检查子窗口的closed属性来检测该事件,并在窗口关闭时清除计时器。大概是这样的:

var windowPopup = window.open("https://www.google.com",'newwindow',
                'scrollbars=no,menubar=no,height=600,width=800'); 
var timer = setInterval(function() { 
    if(windowPopup.closed) {
        clearInterval(timer);
        alert('closed');
    }
}, 1000);

弹出窗口没有任何可侦听的关闭事件,但当窗口关闭时,有一个关闭属性为
true
。您可以通过启动计时器和每秒检查子窗口的closed属性来检测该事件,并在窗口关闭时清除计时器。大概是这样的:

var windowPopup = window.open("https://www.google.com",'newwindow',
                'scrollbars=no,menubar=no,height=600,width=800'); 
var timer = setInterval(function() { 
    if(windowPopup.closed) {
        clearInterval(timer);
        alert('closed');
    }
}, 1000);

我不知道我是否正确理解您,但我认为您可以轻松使用“onbeforeundload()”事件


函数myFunction(){
setItem(“数据集”,“数据集”);
}

您可以检查webStorage,查看它是否在关闭页面之前写入变量。
这有帮助吗?


我不知道我是否正确理解您,但我认为您可以轻松使用“onbeforeundload()”事件


函数myFunction(){
setItem(“数据集”,“数据集”);
}

您可以检查webStorage,查看它是否在关闭页面之前写入变量。

这有帮助吗?

那么您想等待新窗口关闭吗?保存window.open的返回值在变量中,向这个新窗口添加一个close事件处理程序,当用户关闭打开的窗口时,它会执行您想要的操作。。。和你想等新窗口关闭吗?保存window.open的返回值在变量中,向这个新窗口添加一个close事件处理程序,当用户关闭打开的窗口时,它会执行您想要的操作。。。而且@拉斐尔贝罗:是的,这会奏效。我也使用相同的代码来满足该要求。我不知道为什么,但上面的代码说,当我尝试运行时,无法读取null的属性“closed”。@sagarlinbu在这种情况下,您需要调试代码。空值可能是由于一些愚蠢或未知的错误。我仍然无法想象这怎么可能……)@ArupRakshit复制将代码粘贴到浏览器控制台中。按回车键。然后关闭弹出窗口。您将收到警告消息。@RafaelBerro是的,这将起作用。我也使用相同的代码来满足该要求。我不知道为什么,但上面的代码说,当我尝试运行时,无法读取null的属性“closed”。@sagarlinbu在这种情况下,您需要调试代码。空值可能是由于一些愚蠢或未知的错误。我仍然无法想象这怎么可能……)@ArupRakshit复制将代码粘贴到浏览器控制台中。按回车键。然后关闭弹出窗口。您将收到警报消息。
<body onbeforeunload="myFunction()">
</body>

function myFunction() {
    localStorage.setItem("dataSet", 'dataSet');
}