2016-08-04 28 views
0

我想开发一个谷歌浏览器的扩展,它是如何工作的?有一个网站,每次你去那里它会重定向,但是在一些尝试后它不会重定向,我需要做的是我的扩展程序自动输入该网址,直到它停止重定向。Javascript - 回调内部回调?不工作对我来说显然没有理由

我得到这个:

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不同的方法,移动的主要功能和其他的东西里面的代码(update_tab),我认为可以帮助我,但是我无法解决这个问题,我发现我无法执行update_tab内的代码,如果没有这些,url不会在代码中“更新”所以While循环将永远运行,并且,扩展将永远进入相同的URL。

任何帮助将不胜感激,谢谢:)

回答

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 
     } 
+0

因为我需要它重复请求,直到url与我想要的匹配,使用简单的条件将只运行一次。顺便说一下,它不会永远运行,因为该循环,我说这是因为update_tab.is不工作。无论如何感谢您花时间回复:) – Macr1408

+0

如果不匹配,它将永远持续下去。我可以看到你正在使用onClicked意味着你想发生的事情时,用户点击然后应该尝试一些其他的逻辑,否则它会继续前进.. –

+0

我知道,我想循环去永远直到我得到我想要的网址,我没有任何问题。和yup,它使用onClicked,因为我需要它执行时,用户按下扩展按钮,这就是它应该如何工作 – Macr1408