检查window.closed是否还有重定向到另一个URL / Host

时间:2012-11-15 21:20:29

标签: javascript html

我有代码检查窗口是否关闭。如果我留在同一页面,它会起作用 使用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

2 个答案:

答案 0 :(得分:2)

  

合同并不真正令人满意,因为窗口从未实际关闭过。

这似乎是混乱的根源。 JavaScript-in-a-browser中的window对象是指在某些浏览器窗口中显示的显示文档的窗口,但它并不像浏览器自己看到的那样引用该窗口。也不是单个浏览器窗口与单个window实例相关联的情况。因此,window实例可以关闭,因为它不再显示。这是准确的,因为严格来说window元素不是关于作为窗口外部视图的浏览器实体window,而是JavaScript对象window,它是内部视图。包含代码的文档所看到的窗口。

简短版本是我不相信有一种方法可以在网页中执行此操作,因为可见性的外部范围window对象并未引用您想要的实际对象操纵。

答案 1 :(得分:0)

由于同源策略,您无法阻止此功能。但是,您可以使用window.opener.someFunction()每隔100毫秒在父窗口中调用一个函数。如果父窗口在500毫秒之后没有收到消息,那么它可以假设它打开的窗口已关闭。您可以尝试使用window.postMessage,但它在IE中不起作用。