6

永続的なバックグラウンド スクリプト (background.js) に次のコードがあります。

chrome.runtime.onConnect.addListener(function(port) {
    console.assert(port.name == "knockknock");
    port.onMessage.addListener(function(msg) {
        if (msg.joke == "Knock knock")
            port.postMessage({question: "Who's there?"});
        else if (msg.answer == "Madame")
            port.postMessage({question: "Madame who?"});
        else if (msg.answer == "Madame... Bovary")
            port.postMessage({question: "I don't get it."});
    });
});

Chromeで拡張機能をロード/リロードすると、エラーメッセージが表示されます

Uncaught TypeError: Cannot call method 'addListener' of undefined 

コードは Chrome 拡張機能のドキュメント サイトから引用したものであるため、おそらく動作しているコードであり、いくつかの設定が欠けているだけです。

マニフェストは次のようになります。

{
    "manifest_version": 2,
    "name": "TestMessaging",
    "version": "1",
    "background" : {
        "scripts": ["background.js"],
        "persistent": false
    },
    "browser_action": {
        "default_icon" : "icon.png"
    },
    "content_scripts": [
        {
            "matches": ["http://*/*", "https://*/*"],
            "js": [
                "contentscript.js"
            ]
        }
    ],
    "permissions" : [
        "tabs",
        "https://*/*",
        "http://*/*"
    ]

}

ご協力いただきありがとうございます!

4

1 に答える 1