2016-10-28 10 views
-3

クローム拡張機能を作成しようとしていますが、クロム拡張機能をクリックすると、スクリプトが開始され、ボタンが1ミリ秒ごとにループチェックされますid "product-addtocart-button"したがって、ループがボタンを見つけたらすぐにクリックする必要があります。[]ボタンのクロージャーチェックChrome拡張機能が動作しない

それが必要だ場合、私は推測し、サイトがAdidas.aeあり、新しい靴が出てきたら靴が利用可能であることにカウントダウンがあるだろう、とカウントダウンがボタンの上になると利用できるようになりますカードに追加しますクリックすると、すぐにそれをクリックする必要があります。

-

私はBarmarの提案@で取って、変数にID「製品addtocardボタン」に変更し、関数のパラメータでそれを使用。私はまた、 "tab.id"の後の関数から中カッコを取り除きました。

私の元のコード:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(tab.id,{ 
function waitForElementToDisplay(#product-addtocart-button, 10) { 
     if(document.querySelector(#product-addtocart-button)!=null) { 
      alert("document.getElementById('product-addtocart-button').click()") 
      return; 
     } 
     else { 
      setTimeout(function() { 
       waitForElementToDisplay(#product-addtocart-button, 10); 
      }, 10); 
     } 
    } 

     }); 
}); 

更新されたコード:

var button = document.getElementById("product-addtocart-button"); 
var time = 10; 

chrome.browserAction.onClicked.addListener(function(tab) 
    { 
    chrome.tabs.executeScript(tab.id, 

     function waitForElementToDisplay(button, time) { 
       if(document.querySelector(button)!=null) 
       { 
        code: "document.getElementById(button).click();" 
        return; 
       } 
       else 
       { 
        setTimeout(function() { 
         waitForElementToDisplay(button, time); 
        }, time); 
       } 
      } 
     ); 
    } 
); 

注:Why is my Javascript Chrome extension code not working? (Loop check for button):これは、この質問への拡張です。私は提案を取り入れ、少し助けが必要なので、私の更新されたコードを投稿しています。

拡張機能の問題は、クリックしても何も起きていないことです。どんな助け?

+1

あなたは構文エラーがあります。コールバックの定義方法を詳しく見てください。質問はタイプミスとして閉じられることがあります。 –

+0

コンソールからのエラーメッセージ(具体的には構文に関するもの)がなければ、「何も起こっていません。 – ssube

+0

@ssube私はここにエラーメッセージを提供しています:http://stackoverflow.com/questions/40303653/chrome-extension-loop-check-for-button-errors –

答えて

-1

specificationsによると、あなたは次のようにexecuteScriptを起動する必要があります。

chrome.tabs.executeScript(tab.id,{code:"yourCodePackedIntoOneString"});

または

chrome.tabs.executeScript(tab.id,{file:"yourCodeFile.js"});

が、あなたが呼び出している:

chrome.tabs.executeScript(tab.id,{function()etc...});

これを試してみてください:

は、一つのファイルを持っているがmyWaitingLoop.js呼ば:

function waitForElementToDisplay(){ 
    var button = document.querySelector("#product-addtocart-button"); 
    if (button){ 
     button.click(); 
    } else { 
     setTimeout(waitForElementToDisplay,100); 
    } 
} 
waitForElementToDisplay(); 

をしてから、あなたのbackground.jsスクリプトで:

chrome.browserAction.onClicked.addListener(function(tab){ 
    chrome.tabs.executeScript(tab.id,{file:"myWaitingLoop.js"}); 
}); 
+0

あなたは伝説の男です!正確に私がしたい方法で動作します。私は私が恐れていたので投稿し続けました。私は異なる時間帯(ユナイテッドアラブ首長国連邦)とアメリカの時差で誰にも見られないということに基づいて、誰もその質問を見る者はいませんでした。ドバイから非常にありがとう:) –

+0

そしてまだ誰かがそれをdownvoted ... :( –

関連する問題