一般的な質問
こんにちは!私は Chrome 拡張機能の世界を掘り下げていて、全体的なワークフローを理解するのにいくつか問題があります。Google は最近、すべてを background.js と background.html に保持するのではなく、強く支持するイベント ページに切り替えたようです。これは、拡張ロジックのほとんどをコンテンツ スクリプトに渡す必要があることを意味します。
Google のイベント ページ入門では、コンテンツ スクリプトが manifest.json ファイルにリストされています。しかし、彼らのイベント ページの例の拡張機能では、background.js の次のコード ブロックを介して取り込まれます。chrome.tabs.executeScript(tab.id, {file: "content.js"}, function() { });
ある方法で行うことの利点は何ですか?
マイコード
Google の例のように、コンテンツ スクリプトを挿入するプログラム的な方法を進めています。
マニフェスト.json
{
"manifest_version": 2,
"name": "Test",
"description": "Let's get this sucker working",
"version": "0.0.0.1",
"permissions": [
"tabs",
"*://*/*"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": "icon.png"
}
}
background.js
chrome.browserAction.onClicked.addListener(function() {
console.log("alert from background.js");
chrome.tabs.executeScript({file: "jquery-2.0.2.min.js"}, function() {
console.log("jquery Loaded");
});
chrome.tabs.executeScript({file: "content.js"}, function() {
console.log("content loaded");
});
});
content.js
console.log('you\'r in the world of content.js');
var ans = {};
ans.createSidebar = function() {
return {
init: function(){
alert("why hello there");
}
}
}();
ans.createSidebar.init();
console.log
バックグラウンド ページのデバッガーに表示される最初の 3 つのステートメントを取得できます。content.js からアラートを取得して、任意の Web サイトに表示することもできます。しかし、私はconsole.log
content.js から を表示することも、content.js から JS を表示することもできません。バックグラウンド ページ デバッガーの [ソース] タブの [コンテンツ スクリプト] セクションを調べてみました。SOに関する他のいくつかの投稿では、それを表示するためにステートメントを追加することを提案してdebugger;
いますが、私は何も運がありません. 私が見た中で最も近い解決策はこの投稿ですが、マニフェストにコンテンツスクリプトをリストすることによって行われます。
どんな助けでも大歓迎です。ありがとう!