我目前正试图实现以下操作,并按顺序执行工作流程: 1.检索包含重定向URI/URL(如果成功)的URL。 2.使用检索到的URL打开新窗口,该窗口基本上重定向回到同一页面,但现在URL的后面附加了'code = randomCode'。 3.解析出randomCode作为别的东西的输入。jQuery推迟的承诺似乎不适用于打开新窗口
问题: 在这一刻,我使用jQuery承诺首先$ .get(number 1),.then(do number 2),.then(do number 3)。
问题是,这整个功能只能在一次失败后出现。即每次刷新时,第一次打开新窗口,但其他部分不会成功,即randomCode不会被成功解析出来,因为在那个阶段,jQuery无法检测到打开的窗口,即使它应该因为它正在使用。
但是,第一次失败后,一旦打开窗口,每次后续尝试都能成功地检索到所有内容。
这是怎么回事?有人可以帮忙吗?我的代码示例如下:
var retrievedURL;
var desiredString;
function getURL() {
$(document).ready(function() {
$.get(firstURL) // assume valid URL
.then(function(response) {
$('#url').html('Click this');
$('#url-link').attr("href",response.url);
retrievedURL = response.url;
})
.then(function() {
newWindow = window.open(retrievedURL ,'test');
})
.then(function() {
desiredString = newWindow.location.search.substr(6);
})
})
}
所以这就是函数的要点。我当然会继续用desiredString做一些事情,但不知何故,每一次,第一次运行,desiredString都是null。
删除的getURL功能。这是防止你的代码被绑定到document.ready – Oisin
试了一下,然后它运行在一个无限循环... –