2

所以我正在构建一个“喜欢”按钮,但是在用户通过小窗口登录后我遇到了一个小问题,用户必须刷新整个页面。我希望它检查窗口是否已关闭,然后刷新 iframe。所以我有这段代码来打开弹出窗口,我一直在查看这篇文章以寻求帮助,但这并没有太大帮助。 检查弹出窗口是否关闭

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

4

2 回答 2

2

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

win = window.open(...);

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

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

更新:这里 讨论了另一种技术

于 2012-09-10T05:05:36.293 回答
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++;                                    
        }                         
}
于 2012-09-10T05:12:17.260 回答