我有检查窗口是否关闭的代码。如果我停留在同一页面上,它会起作用。
使用 Internet Explorer,如果我单击一个链接然后重定向到另一个站点,即使 WINDOW 实际上从未关闭,window.closed 也会返回 true。
我这样做:
w = window.open("mypage.html");
var t = setInterval(function() {
if (!w) { alert('a'); }
if (w.closed) { alert('b'); }
if (!w || w.closed) {
clearInterval(t); hide('mainShadow');
}
}, 800);
在“mypage.html”中,有一个指向另一个站点的链接。当转到另一边时,w.closed 返回 true
。
IE有没有真正检查窗口是否关闭的好方法?
契约(Contract)并不真正令人满意,因为窗口从未真正关闭过。
此代码适用于 Chrome,不适用于 IE9
最佳答案
The contract isn't really satisfied because the window never actually closed.
这似乎是困惑的根源。 JavaScript-in-a-browser 中的 window
对象指的是显示某个浏览器窗口中体现的文档的窗口,但它并不指浏览器本身看到的那个窗口。单个浏览器窗口也不是与单个 window
实例关联的情况。所以 window
实例可以关闭,因为它不再显示。这是准确的,因为严格来说,window
元素不是关于作为窗口外部 View 的浏览器实体 window
,而不是 JavaScript 对象 window
这是包含代码的文档看到的窗口的内部 View 。
简短的版本是,我不相信有一种方法可以从网页中执行此操作,因为可见性的外部范围,即 window
对象,并不指代实际您要操作的对象。
关于javascript - 检查 window.closed 是否重定向到另一个 URL/主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406418/