[英]How to detect window close event that was opened using window.open()
我試圖檢測我在 javascript 中使用window.open()
打開的窗口關閉事件。 但由於某種原因,它似乎不起作用。
這是我的代碼:
<html>
<head>
<script>
var clicktest = function() {
var newwindow = window.open("https://www.google.com",'myPopupwindow', "height=640,width=960,toolbar=no,menubar=no,scrollbars=no,location=no,status=no");
newwindow.addEventListener("beforeunload", function (e) {
console.log('hey');
});
}
</script>
</head>
<body>
<button onclick="clicktest()">hey</button>
</body>
</html>
我也嘗試使用
newwindow.onbeforeunload = function () {
console.log('hey');
}
而不是window.addeventlistener()
,但兩者都不起作用,我確實嘗試使用window
而不是newwindow
,但它仍然不起作用。
對於跨域文檔,唯一的解決方案是輪詢彈出窗口對象的.closed
屬性。
但這是一件非常丑陋的事情,所以請稍等一下,看看您為什么需要這樣做。
為了限制丑陋,您可以使用電池友好的requestAnimationFrame 為輪詢供電:
const popup = window.open('https://google.com');
waitForClose(popup, e=>console.log('closed'));
function waitForClose(win, cb) {
function poll() {
if(win.closed) {
cb();
}
else {
requestAnimationFrame(poll);
}
}
poll();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.