これは、クロム拡張機能を構築する最初の試みです。最初の例を取り上げ、それを自分のニーズに合わせてモチーフにしました。
ポップアップ メニューから別のタブで 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 (現在のタブ) に変更すると、すべて正常に動作します。許可がないか、パラメーターに問題があるように見えますが、コードを動作させることができません。
コードが機能しない理由を誰かが理解できますか?
前もって感謝します