2

これは、クロム拡張機能を構築する最初の試みです。最初の例を取り上げ、それを自分のニーズに合わせてモチーフにしました。

ポップアップ メニューから別のタブで YouTube プレーヤーを制御できる Chrome 拡張機能を作成したいと考えています。

最初に、開いているすべての YouTube タブのリストを表示したいと思います。これはうまくいきます。その後、これらの各タブにスクリプトを挿入したいと思います。

それが問題の発生場所です。開発者コンソールに次のエラーが表示されます

Error during tabs.executeScript: Unknown error.      sendRequest:22
    chromeHidden.handleResponse                      sendRequest:22
Callback worked 

私のmanifest.jsonは次のようになります

{
  "manifest_version": 2,

  "name": "YoutubeMusicControl",
  "description": "First Try",
  "version": "1.0",

  "permissions": [
    "tabs",
    "http://*/",
    "https://*/"
  ],

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  }
}

popup.html は、スクリプトを実行する以外に特別なことは何もしません。

ここが興味深い部分です

var TabControl = {

    listCurrentTabs : function(){
        var name = "";
        var div;

        chrome.tabs.query({}, function(tabs){

            for(var i = 0; i < tabs.length; i++){

                var found = tabs[i].url.search(/.*youtube.*/);

                if(found != -1){
                    div = document.createElement('div');

                    name = tabs[i].title;
                    div.className = "entry";
                    div.innerHTML = name;
                    document.body.appendChild(div);                  

                    chrome.tabs.executeScript(i,{
                        code:"alert('test');"
                    },function(results){console.log("Callback worked")});
                    }                    
                }
        });
    }
}

document.addEventListener('DOMContentLoaded', function () {
  TabControl.listCurrentTabs();
});

パラメータ i を null (現在のタブ) に変更すると、すべて正常に動作します。許可がないか、パラメーターに問題があるように見えますが、コードを動作させることができません。

コードが機能しない理由を誰かが理解できますか?

前もって感謝します

4

1 に答える 1