Chrome拡張機能を使用して、メインコンテキストを呼び出すために拡張機能ボタンをクリックしてgmail.jsにアクセスできるようにします。マイbackground.jsです:Chrome拡張機能のbackground.jsからmain.jsにメッセージが送信されない
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.sendMessage(tab.id, {greeting: "hello"});
});
});
私main.jsは次のとおりです。
var gmail;
function refresh(f) {
if ((/in/.test(document.readyState)) || (typeof Gmail === undefined)) {
setTimeout('refresh(' + f + ')', 10);
} else {
f();
}
}
var main = function() {
gmail = new Gmail();
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
console.log(sender.tab ? "from a content script:" + sender.tab.url : "from the extension");
});
}
refresh(main);
マイcontent.jsさ:
var j = document.createElement('script');
j.src = chrome.extension.getURL('jquery-1.10.2.min.js');
(document.head || document.documentElement).appendChild(j);
var g = document.createElement('script');
g.src = chrome.extension.getURL('gmail.js');
(document.head || document.documentElement).appendChild(g);
var s = document.createElement('script');
s.src = chrome.extension.getURL('main.js');
(document.head || document.documentElement).appendChild(s);
私のmanifest.jsonをです:
{
"name": "Test",
"version": "1.0",
"description": "Test Gmail chrome extension",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Export current Gmail message",
"default_icon": "email_16x16.png"
},
"content_scripts": [
{
"matches": ["https://mail.google.com/*"],
"js": ["content.js"]
}
],
"web_accessible_resources": [
"jquery-1.10.2.min.js",
"background.js",
"gmail.js",
"main.js"
],
"manifest_version": 2
}
拡張機能がロードされると、このエラーが表示されます。
Uncaught TypeError: Cannot read property 'addListener' of undefined
at <anonymous>:9:27
at refresh (chrome-extension://lnndcckhmkllogdhmmlhfdoehbfgipdj/main.js:14)
at <anonymous>:1:1
ありがとうございました。
完了しました。 – Scott
あなたの編集に関する唯一の悪い点は、私の答えが今や意味をなさないことです。それを避けるようにしてください。必要に応じて、新しい質問をして、この質問に戻ることができます。また、 'content.js'には何がありますか? – Teepeemm
content.jsが追加されました。これはおそらくこれの鍵です。 @テペーム、それについて申し訳ありません、私は別の質問をしていたはずです。 – Scott