setInterval未在click()函数内运行

时间:2014-05-10 07:02:15

标签: javascript facebook setinterval

这个问题之前没有被问过,因为我已经广泛搜索了一个答案而且我正在打砖墙。

当我通过控制台运行此代码或超出onclick功能时,它可以通过打开facebook oauth对话框完美地工作,当它完成时它将关闭并重新加载原始页面。

var win = window.open('/auth/facebook','location=yes, scrollbars=yes, width=640, height=359', true);


var intervalID = setInterval(function(){
      if(win.closed){
          location.reload();
      }
 }, 100);

我的问题是在click()函数中它根本不起作用。

$(document).ready(function() {

        var intervalID = null;
        var win = null

        $("#flogin").click(function(){

            win = window.open('/auth/facebook','location=yes, scrollbars=yes, width=640, height=359', true);


            intervalID = setInterval(function(){
                    if(win.closed){
                        location.reload();
                    }

                }, 100);
        });
    });

对于你们所有人来说,这似乎是一个非常简单的问题,可能有一个简单的答案,但我似乎无法找到。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

正如您在评论中提到的那样,您正在使用<a> tag
使用preventDefault来阻止默认操作

这应该有效

$(document).ready(function() {

    var intervalID = null;
    var win = null

    $("#flogin").click(function(event){
        event.preventDefault(); //prevents the default action
        win = window.open('/auth/facebook','location=yes, scrollbars=yes, width=640, height=359', true);


        intervalID = setInterval(function(){
                if(win.closed){
                    location.reload();
                }

            }, 100);
    });
});