使用JavaScript的window.open不能正常工作(Javascript window.o

2019-06-26 18:34发布

好。 我试图登录到Twitter。 该窗口在此代码开放。 这被惊动了响应不为空并且是到登录窗口的链接。 有任何想法吗?

var url = "./twitter_login.php";
var con = createPHPRequest();

con.open("POST",url,true);
con.setRequestHeader("Content-type","application/x-www-form-urlencoded");
con.send("");

var response = "";

con.onreadystatechange = function() {

    if(con.readyState==4 && con.status==200) {

        response = con.responseText;    
        alert(response);
        window.open(response,"twitter","menubar=1,resizable=1,width=350,height=500");        

    }

}

Answer 1:

包含在大多数浏览器标准的弹出窗口阻止程序逻辑,这些天将阻止任何调用window.open()不属于用户操作的直接结果。 由定时器或任何异步回调(如你的Ajax功能齐全)触发的代码将被视为不直接由用户操作引起的,新的弹出窗口通常会被阻止。

您可以验证这就是通过临时改变浏览器的弹出窗口阻止(关灯)发生的事情,看到它,然后开始工作。

也许你需要做一个什么样的解决办法是建立在那开始的代码这个线程,然后把内容放到窗口,当你得到你的Ajax响应用户操作窗口。 浏览器可能会允许的。 我知道这是从视觉角度不太理想,但直到Ajax响应进来(像“载入中...”),你可以在窗口中一些临时的内容。



Answer 2:

只是有此相同的问题。 万一你想那个固定它的代码。 我用这个:

newWindow = window.open("", "_blank");

request = $.ajax({ ... my request which returns a url to load ... })

request.done((function(_this) {
        return function(data, textStatus, jqXHR) {
          return newWindow.location = data.Url;
        };
      })(this));


文章来源: Javascript window.open not working