Javascript - 内部回调回调?显然没有理由对我不起作用

时间:2016-08-04 12:30:48

标签: javascript function api google-chrome callback

我正在尝试开发Google Chrome扩展程序,它是如何运作的?好吧有一个网络,每次你去那里它会重定向,但是经过一些尝试它不会重定向,我需要做的是我的扩展自动输入该网址,直到它停止重定向。

我明白了:

function update_tab(activeTab){
     chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
          activeTab = tabs[0];
     }
}

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.create({"url": "https://Example.com/SiteWanted"});
    wait(3000);
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    var activeTab = tabs[0];
    while(activeTab.url === "https://Example.com/SiteIDontWant"){
        chrome.tabs.update(activeTab.id,{url:"example.com/SiteWanted"});
        update_tab(activeTab);
        wait(3000); // i know this function is weird, but it is necessary for the code to work, and yes, i known that using functions to delay the code is not... right
    }
  }); 
});

我已经尝试过几乎所有内容,更改了var名称,尝试了不同的方法,如chrome.tabs.getCurrent,在main函数中移动代码(update_tab)以及其他我认为可以帮助我的东西,但是我无法解决这个,我已经想到的是,无论我做什么,update_tab里面的代码都不会运行,如果不这样,url就会赢得"更新"在代码中,所以While循环将永远运行,并且随之而来,扩展将永远地输入相同的URL。

非常感谢任何帮助,谢谢:)

1 个答案:

答案 0 :(得分:0)

为什么你使用while循环如果条件满足肯定它会永远运行。

    if(activeTab.url === "https://Example.com/SiteIDontWant"){
            chrome.tabs.update(activeTab.id,{url:"example.com/SiteWanted"});
            update_tab(activeTab);
            wait(3000); // i know this function is weird, but it is necessary for the code to work, and yes, i known that using functions to delay the code is not... right
        }