Javascript window.open不工作
问题描述:
好的。我试图登录到Twitter。该代码中未打开该窗口。获得警报的响应不为空,并且是到登录屏幕的链接。有任何想法吗?Javascript window.open不工作
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");
}
}
答
包含在这些日子将阻止不属于用户操作的直接结果window.open()
任何电话大多数浏览器标准的弹出窗口阻止程序逻辑。由定时器或任何异步回调触发的代码(如您的ajax就绪函数)将被视为不是由用户操作直接引起,并且新的弹出窗口通常会被阻止。
您可以通过临时更改浏览器的弹出窗口阻止(关闭它)并查看它开始工作来验证这是发生了什么。
作为解决方法,您可能需要做的是在启动此代码线程的用户操作时创建窗口,然后在获得ajax响应时将内容放入窗口中。浏览器可能会允许。我知道从视觉的角度来看这并不理想,但您可以在窗口中放置一些临时内容,直到出现ajax响应(类似于“loading ...”)。
+7
非常有用!点击'window.open'创建一个窗口,然后将它传递给你的回调函数,在这个回调函数中'mywindow.location = someurl' – lajarre 2014-01-16 11:54:28
答
刚刚有这个完全相同的问题。以防万一你想要修复它的代码。我用这个:
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));
大多数浏览器块'window.open'是否与用户事件(键盘,鼠标)没有关联。 – Zeta 2012-08-05 23:33:27