Google Chromeには、Webページのタブを開き、そのページにコードを挿入する拡張機能があります。また、コードの完了後に呼び出されるchrome.tabs.executeScript
のコールバックを登録しました。このコールバックは、別のタブを開いて別のページを開き、他のアクションを実行しますが、最初のタブのページが操作されるまで、このコールバックは実行されません。私が望む前にchrome.tabs.executeScriptのコールバックが呼び出され、回避策が必要
私の問題は、それが呼ばれるべきときに、このコールバックが呼び出されるということですが、私は呼ばれたくないとき:
は私がコードを注入が特定のDOM要素が働く前に存在しているかどうかを確認しsetInterval
が含まれていますこれらのDOM要素が動作するまで、コールバックをアクティブにしたくありません。
私は、注入されたコードを自分の拡張ページのコードとやりとりさせる方法を知らない。
エクステンションページ内のコードに、適切なタイミングでコールバックをしてもらうことが大丈夫だと言う方法はありますか?ここで
は、私が今やっているかを説明そのいくつかのコードです:私は起こるしたいものfunction doStuffWithTabs() {
chrome.tabs.create({url: 'some/url/here'}, function(tab) {
chrome.tabs.executeScript(tab.id, code: "var interval = setInterval(function(){if(jQuery(domElement).length){clearInterval(interval);workMagic();}},1);"}, function(){
goForthAndConquer();
});
}
}
workMagic()
が開いたタブのDOMとgoForthAndConquer()
を操作するコードを表しているとき、開いたタブの操作完了です。
すぐに分かるように、注入されたコードはsetIntervalを登録してすぐにコールバックを呼び出します。繰り返しますが、workMagic()
の後にコールバックが発生するようにします。
あなたは天才です – tofutim