检查窗口是否已关闭,在iframe内部

时间:2012-09-10 04:51:11

标签: javascript iframe

所以我正在构建一个'喜欢'按钮但是在用户通过小窗口登录后我遇到了一个小问题,用户必须刷新整个页面。我希望它检查窗口是否已关闭,然后刷新iframe。所以我有这个代码打开弹出窗口,我一直在看这篇帖子寻求帮助,但这并没有帮助那么多。        Check if a popup window is closed

function grubber_highlight()
            {           
                    var popup = window.open("http://www.grubber.co.nz/login/", "newwindow", config="height=600,width=800, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, directories=no, status=no");
                        var windowloc = document.URL;
                        var windowlocation = (windowloc + "&highlight=t");
                        window.location = windowlocation;   
                        if (popup) {
                          popup.onclose = function () { alert("closed"); }
                        }                   
            }

我有这个代码来检查窗口是否已关闭,然后提醒我它已经工作

                   if (popup) {
                        popup.onclose = function () { alert("closed"); }
                    }

小窗口就在这里      http://www.grubber.co.nz/login/ 如果有人想要知道的话。

我还希望它能够在大多数浏览器上工作ie8

修改    我用谷歌搜索了一个但更深,发现 onunload 它在关闭时起作用但是当我打开窗口时它也会激活......

问题

如何检测窗口何时关闭,然后刷新iframe

2 个答案:

答案 0 :(得分:2)

假设这是弹出窗口的打开方式:

win = window.open(...);

然后,您应该反复检查弹出窗口是否已关闭。

var timer, win;
function polling(){
 if (win && win.closed) {
   clearInterval(timer);
   alert('popup window is closed.');
 } 
}
timer = setInterval('polling()',100);

<强>更新: 讨论了另一种技术here

答案 1 :(得分:1)

好的谢谢你的家伙但是我用 onunload 活动找到我想要的答案

     var popup = window.open("http://www.grubber.co.nz/login/", "newwindow", config="height=600,width=800, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, directories=no, status=no");
var windowloc = document.URL;
var windowlocation = (windowloc + "&highlight=t");
window.location = windowlocation;
var e = 0;  
if (popup) {
     popup.onunload = function () {
        if (e == 1)
        {
         //this will reload the iframe
        alert("closed");
         }
        else
        {
          //this will be when the pop-up gets created
        e++;                                    
        }                         
}