所属分类:web前端开发
关闭打开的窗口的方法:1、使用“window.close”关闭新窗口;2、使用“window.location”重定向;3、使用“window.blur”和“window.focus”;4、使用“window.history”回退;5、使用“window.opener”。
window.open 是 JavaScript 中用于打开新窗口或新选项卡的函数。然而,由于浏览器的安全限制,你不能直接从新窗口或选项卡返回到原始窗口或选项卡,也不能直接关闭新窗口或选项卡。这是为了防止恶意脚本在用户不知情的情况下关闭窗口或选项卡。
然而,你可以通过一些方法间接地关闭新窗口或选项卡。以下是几种可能的方法:
1. 使用 window.close 关闭新窗口
虽然你不能直接关闭由 window.open 打开的新窗口,但你可以在新窗口中调用 window.close 函数来关闭它。例如:
window.open('https://www.example.com', '_blank'); // 在新窗口中... window.close();
请注意,只有由 window.open 打开的窗口才能被关闭。浏览器通常不允许脚本关闭非脚本打开的窗口。此外,浏览器可能会阻止脚本关闭包含 window.close 的窗口,除非这个脚本是在窗口的沙盒环境中运行的,或者窗口是通过 window.open 打开的。
2. 使用 window.location 重定向
你可以通过在新窗口的地址栏中输入新的 URL 来重定向到新的页面,从而间接地关闭新窗口。例如:
window.open('https://www.example.com', '_blank'); // 在新窗口中... window.location = 'https://www.example2.com';
在这个例子中,新窗口会被重定向到新的 URL,从而间接地关闭了原来的窗口。请注意,这种方法可能会给用户带来不良体验,因为它会改变浏览器的焦点。
3. 使用 window.blur 和 window.focus
你可以尝试让新窗口失去焦点,然后再重新获得焦点,这可能会关闭它。例如:
window.open('https://www.example.com', '_blank'); // 在新窗口中... window.blur(); // 失去焦点 setTimeout(function() { window.focus(); // 重新获得焦点 }, 0);
这种方法可能并不总是有效,因为浏览器的实现可能会有所不同。此外,这种方法可能会给用户带来不良体验,因为它会改变浏览器的焦点。
4. 使用 window.history 回退
你可以尝试使用 window.history 对象的 back() 方法来回退到上一个历史记录条目。这可能会关闭新窗口或选项卡。例如:
window.open('https://www.example.com', '_blank'); // 在新窗口中... window.history.back();
请注意,这种方法可能会给用户带来不良体验,因为它会改变浏览器的历史记录。此外,这种方法可能并不总是有效,因为浏览器的实现可能会有所不同。
5. 使用 window.opener
如果你是在新窗口中打开的,那么你可以使用 window.opener 属性来访问原始窗口。然后你可以在原始窗口中调用 window.close() 来关闭新窗口。例如:
在原始窗口中:
var newWindow = window.open('https://www.example.com', '_blank'); // 在新窗口中... newWindow.close(); // 关闭新窗口
请注意,这种方法可能会给用户带来不良体验,因为它需要用户手动关闭新窗口。此外,由于浏览器的安全限制,这种方法可能并不总是有效。