2

ここに投稿された同様の質問を閲覧しようとしましたが、どれもうまくいかないようです

Manifest.json

{
    "manifest_version": 2,
    "name" : "A simple Found Text Demo",
    "description" : "Bla",
    "version" : "1.0",
    "background" : {
        "pages" : "background.html"
    },
    "page_action" : {
        "default_icon" : "icon.png"
    },

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

Background.html

<html>
 <script>
    chrome.extension.onMessage.addListener(
            function(request, sender, sendResponse){
            alert(request);

    //chrome.pageAction.show(sender.tab.id);
            sendResponse('Found!');
            }
    )
 </script>
</html>

Contentscript.js

chrome.extension.sendMessage({"name" : "hola"}, function(res){
     console.log(res); })

ただし、同じエラーが繰り返し発生します。

Port error: Could not establish connection. Receiving end does not exist.

何か案は?

4

1 に答える 1

5

に変わってからmanifest 2、実際にはインライン スクリプトを使用できなくなりました (上記background.html<script>タグに含まれているものなど。ここを参照してください)。あなたのユースケースはわかりませんが、ほとんどの場合、単純なケース(読んでください:私がやったこと:))、実際にbackground.htmlは何も入力する必要はありません。background.js代わりに、上記と同じスクリプトを含むファイルを直接渡すことができます。したがって、これを次のように変更してみてくださいmanifest.json

{
    "manifest_version": 2,
    "name" : "A simple Found Text Demo",
    "description" : "Bla",
    "version" : "1.0",
    "background" : {
        "scripts" : ["background.js"]
    },
    "page_action" : {
        "default_icon" : "icon.png"
    },

    "content_scripts" : [{
        "matches" : ["*://*/*"],
        "js" : ["contentscript.js"],
        "run_at": "document_end"
    }]
}

ここで 2 つのことを行ったことpagesに注意しscriptsてください。これを省略した場合、間違いなく問題が発生する可能性があります (現在発生しているものと同様の問題)。ページが読み込まれた後にコンテンツ スクリプトを実行するように指示しています。すぐに実行すると、バックグラウンド ページが読み込まれていない可能性があります。つまり、メッセージを受信する準備ができておらず、接続エラーが発生します。以下は、以前にタグの間にあったスクリプトと同じです。background["background.js"]"run_at": "document_end"content_scriptsbackground.js<script>

chrome.extension.onMessage.addListener(
        function(request, sender, sendResponse){
        alert(request);

//chrome.pageAction.show(sender.tab.id);
        sendResponse('Found!');
        }
)
于 2013-01-19T23:18:09.313 に答える