1

Chrome 拡張機能は初めてで、始めるのに少し苦労しています。

まず第一に、私の全体的な目標は、ポップアップでボタンをクリックして、DOM に何かを変更できるようにすることです。私の理解が正しければ、これを行う方法は、コンテンツ スクリプトをロードし、このコンテンツ スクリプトにメッセージを送信することです。これは、Chrome 開発者ページを見たときに得たものですが、コンソール ログには何も表示されません。

マニフェスト.json

{
    "manifest_version": 2,

    "name": "Test",
    "version": "1.0",

    "permissions": [
        "tabs", "http://*/*"
    ],

    "content_scripts": [
        {
            "matches": ["http://*/*"],
            "js": ["content.js"]
        }
    ],

    "browser_action": {
        "default_icon": "icon.png",
        "default_popup": "popup.html"
    }
}

popup.html

<html>
  <body>
    <script src="popup.js"></script>
  </body>
</html>

popup.js

document.addEventListener('DOMContentLoaded', function () {
    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.sendMessage(tab.id, {greeting: "hello"}, function(response) {
            console.log(response.farewell);
        });
    });
});

content.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        console.log(sender.tab ?
                    "from a content script:" + sender.tab.url :
                    "from the extension");
        if (request.greeting == "hello")
            sendResponse({farewell: "goodbye"});
    });

このコードの多くはドキュメントから直接引用しているため、何が間違っているのかわかりません。

4

2 に答える 2

-1

popup.js スクリプトは、popup.html (DOMContentLoaded) をロードするとファイルを起動します。しかし、確かに、コンテンツが挿入されるスクリプトはまだどの Web ページにもありません。これは、開く時間がなく、「matches」: ["http:// * / *"] で問題ないためです。 . バックグラウンド スクリプトでバックグラウンド コンテンツ スクリプトを変更し、うまくいくと思います。

于 2013-04-19T09:01:20.983 に答える