好。我正在尝试登录Twitter。此代码未打开该窗口。收到警报的响应不是null,而是指向登录屏幕的链接。有任何想法吗?
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 ready函数)触发的代码将被视为不是由用户操作直接引起的,并且通常会阻止新的弹出窗口。
window.open()
您可以通过临时更改浏览器的弹出窗口阻止功能(将其关闭)并查看然后开始工作,来验证这是正在发生的情况。
解决方法,您可能需要做的是在启动此代码线程的用户操作后创建窗口,然后在收到ajax响应时将内容放入窗口中。浏览器可能会允许这样做。从视觉角度来看,这是我所不希望的,但是您可以在窗口中放置一些临时内容,直到ajax响应出现(例如“正在加载…”之类)。