クロム拡張開発チュートリアルで述べたように、manifest.json
ファイルに jQuery を含めて、次のようにコンテンツ スクリプトで使用できます。
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"css": ["mystyles.css"],
"js": ["jquery.js", "myscript.js"]
}
],
私はそれをしました。しかし、JavaScript コンソールを開いて拡張機能のブラウザ アクション アイコンをクリックすると、「Uncaught ReferenceError: $ is not defined」というエラーが表示されます。
どうすればいいの!? 何が悪いのか理解できません。
もともと回答として投稿されたOPからの更新:
リクエストに応じて、完全なマニフェストとコンテンツ スクリプトのサンプルを以下に示します。マニフェスト.json:
"name": "My Extension",
"version": "1.0",
"manifest_version": 2,
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html",
"default_title": "My Extension"
},
"background": {"page": "background.html"},
"content_scripts": [{
"matches": ["http://*/*","https://*/*"],
"js": ["jquery-1.8.3.js","content.js"]
}],
"permissions": ["tabs", "http://*/*", "https://*/*"]
コンテンツ スクリプト スニペット:
var message = $('body').width();
chrome.extension.sendMessage (message);
rsanchezの答えについて。詳しく説明してみます。よく知られているように、2 つの JavaScript コンソールを開くことができます。1 つ目は拡張機能の popup.html に関連付けられ、2 つ目は現在開いている Web ページに関連付けられています。コンテンツスクリプトとpopup.htmlに含まれるスクリプトに次のコードスニペット(たとえば)があります
var = bodyWidth$('body').width();
console.log(bodyWidth);
現在開いている Web ページに関連付けられたコンソールを開くと上記のエラーが表示されますが、拡張機能の popup.html に関連付けられた js コンソールを開くと、本体の幅がコンソールに表示されます。つまり、popup.html に含まれるスクリプトは jQuery ライブラリを参照し、コンテンツ スクリプトは参照しません。