我有代码检查窗口是否关闭。如果我留在同一页面,它会起作用 使用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中是否有一种好方法可以真正检查窗口是否关闭 合同并不真正令人满意,因为窗口从未实际关闭过。
此代码适用于Chrome,而不适用于IE9
答案 0 :(得分:2)
合同并不真正令人满意,因为窗口从未实际关闭过。
这似乎是混乱的根源。 JavaScript-in-a-browser中的window
对象是指在某些浏览器窗口中显示的显示文档的窗口,但它并不像浏览器自己看到的那样引用该窗口。也不是单个浏览器窗口与单个window
实例相关联的情况。因此,window
实例可以关闭,因为它不再显示。这是准确的,因为严格来说window
元素不是关于作为窗口外部视图的浏览器实体window
,而是JavaScript对象window
,它是内部视图。包含代码的文档所看到的窗口。
简短版本是我不相信有一种方法可以在网页中执行此操作,因为可见性的外部范围window
对象并未引用您想要的实际对象操纵。
答案 1 :(得分:0)
由于同源策略,您无法阻止此功能。但是,您可以使用window.opener.someFunction()每隔100毫秒在父窗口中调用一个函数。如果父窗口在500毫秒之后没有收到消息,那么它可以假设它打开的窗口已关闭。您可以尝试使用window.postMessage,但它在IE中不起作用。