2016-08-04 31 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