2016-08-04 5 views
0

私はGoogle Chromeの拡張機能を開発しようとしていますが、どのように機能しますか?あなたがそこに行くたびにリダイレクトされますが、リダイレクトされない試行の後、リダイレクトを止めるまで、私の内線が自動的にそのURLに入るということです。Javascript - コールバック内のコールバック?明らかに何の理由もなく私のために働かない

私はこれだ:、私は、ほとんどすべてのものを試してみましたVARの名前を変更し、chrome.tabs.getCurrentのようなさまざまな方法を試してみました

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 
    } 
    }); 
}); 

を私はと考えていることを主な機能と他のものの内側のコード(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が1つのものと一致するまでリクエストを繰り返す必要があるため、単純条件を使用すると1回だけ実行されます。そして、btw、それはそのループのために永遠に動かないでしょう、私はそれがupdate_tab.isが働いていないからだと言いました。とにかく返信にあなたの時間を取ってくれてありがとう:) – Macr1408

+0

と一致しない場合、それは永遠に続きます。私はあなたが使用していることを見ることができますonClickedを意味するものは、ユーザーがクリックしたときに他のロジックを試してみる必要があった場合、それはちょうど行くだろう.. –

+0

私が知っているまで、私はそれに何の問題もない。そして、あなたがユーザーが拡張ボタンを押したときに実行する必要があるので、それはonClickedを使用します。それは動作するはずです。 – Macr1408

関連する問題