怎么监听window.open打开的新窗口是否关闭
时间: 2023-07-16 10:15:30 浏览: 92
可以使用window.open()方法打开一个新窗口,并给新窗口命名,然后使用window.close()方法关闭新窗口。同时,可以在父窗口中使用setInterval()方法定时检查子窗口是否已关闭。
示例代码如下:
在父窗口中:
```
var childWindow = window.open('child.html', 'childWindow');
var checkChildWindow = setInterval(function() {
if (childWindow.closed) {
clearInterval(checkChildWindow);
console.log('Child window is closed');
}
}, 1000);
```
在子窗口中:
```
<button onclick="window.close()">Close window</button>
```
这段代码会在父窗口中打开一个名为"childWindow"的子窗口,并每秒钟检查一次子窗口是否已关闭。在子窗口中,当点击"Close window"按钮时,子窗口会被关闭。
相关问题
不使用window.open(),只有等打开的窗口关闭后,才会执行后面的js代码
如果你不想使用`window.open()`方法打开窗口,也可以在当前窗口中打开链接,并在打开链接后监听`window`对象的`unload`事件,当链接页面关闭时执行后续的JavaScript代码。
例如,你可以在点击一个链接时打开一个新页面,并监听`unload`事件,当链接页面关闭时执行后续的JavaScript代码,如下所示:
```html
<a href="http://example.com" id="myLink" target="_blank">打开链接</a>
<script>
$(document).ready(function() {
$('#myLink').click(function(event) {
event.preventDefault();
var url = $(this).attr('href');
var newWindow = window.open(url, '_blank');
$(window).on('unload', function() {
// 链接页面关闭后执行后续的 JavaScript 代码
doSomething();
});
});
});
function doSomething() {
// 后续的 JavaScript 代码
}
</script>
```
在上面的代码中,我使用了`$(this).attr('href')`获取链接的URL,并使用`window.open()`方法在当前窗口中打开链接。然后,我使用`$(window).on('unload', function() {...})`方法监听了`unload`事件,并在事件处理程序中执行`doSomething()`函数,当链接页面关闭时会触发`unload`事件,从而执行后续的JavaScript代码。注意,在链接的`<a>`标签中需要设置`target="_blank"`属性,以在新窗口中打开链接。
vue项目中如何监听新打开的窗口关闭事件
可以使用 `window.onbeforeunload` 事件来监听窗口关闭事件。该事件会在窗口即将关闭时触发,可以在此时执行一些操作,比如保存未提交的数据、清理资源等。
在 Vue 项目中,可以在组件的 `mounted` 钩子函数中绑定该事件。例如:
```vue
<template>
<div>
<button @click="openNewWindow">打开新窗口</button>
</div>
</template>
<script>
export default {
methods: {
openNewWindow() {
const newWindow = window.open('https://www.example.com')
newWindow.addEventListener('beforeunload', this.handleWindowClose)
},
handleWindowClose() {
// 处理窗口关闭事件
console.log('新窗口关闭了')
}
}
}
</script>
```
在打开新窗口时,绑定 `beforeunload` 事件,并指定回调函数 `handleWindowClose`。当新窗口关闭时,会触发该事件并执行回调函数。