0

ドキュメントを読みましたが、これは基本的なものであるはずですが、これらのアラートが表示されないようです。どうしたの?

popup.html

<html>
<head>
<script>
    function finder() {
        chrome.tabs.getSelected(null, function(tab) {
          chrome.tabs.sendMessage(tab.id, {type: "feature"}, function(response) {
            console.log(response.farewell);
          });
        });
    }
</script>
<style>
    p {
        border: 1px solid black;
        width:200px;
        font-size:10px;
    }
</style>
</head>
<body>
<p><a id="jira">Click to populate FE description</a></p>
<script>
var jira = document.getElementById('jira');
jira.addEventListener('click', finder, false);
</script>
</body>
</html>

コンテンツ スクリプト:

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
    alert('sreceived');
    if (request.type == "feature") {
        alert('score!');
    }
});
4

1 に答える 1

5

インライン JavaScript は実行されません。この制限により、インライン ブロックとインライン イベント ハンドラ(例: <button onclick="...">) の両方が禁止されます。

上記の行により、popup.html が制限に違反していることは明らかです。これは次のように解決できます。

<script>のすべてのタグを削除しpopup.html、元のコードを に移動しpopup.jsます。

<html>
<head>
<script src="popup.js"></script> <!-- Added this line -->
<style>
    p {
        border: 1px solid black;
        width:200px;
        font-size:10px;
    }
</style>
</head>
<body>
<p><a id="jira">Click to populate FE description</a></p>
</body>
</html>

のコードを文字通りコピーして貼り付けたわけではありませんpopup.js。これらは私が行った変更です:

  1. chrome.tabs.getSelected()を支持して非推奨になったchrome.tabs.query()ので、更新しましたchrome.tabs.getSelected(null, function(tab) {});
  2. console.log(response.farewell);コンテンツ スクリプトからの応答ハンドラがないため、コメント アウトされています。

最終 popup.js

function finder() {
    chrome.tabs.query({
        "status": "complete",
        "currentWindow": true,
        "active": true
    }, function (tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {
            type: "feature"
        }, function (response) {
            //console.log(response.farewell);
        });
    });
}
document.addEventListener('DOMContentLoaded',= function() {
    document.getElementById('jira').onclick = finder;
});

manifest.json に関する注意事項

  1. 権限が次のように利用可能であることを確認"permissions":["tabs","<all_urls>"],
  2. コンテンツ スクリプトの権限も

    "content_scripts": [
        {
          "matches": ["<all_urls>"],
          "js": ["content.js"]
        }
    ]
    

最終マニフェスト.json

{
"name":"Basic Message Passing",
"description":"This demonstrates Basic Message Passing",
"browser_action":{
    "default_popup":"popup.html",
    "default_icon":"screen.png"
},
"manifest_version":2,
"version":"2",
"permissions":["tabs","<all_urls>"],
"content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
    }
  ]
}

あなたのコンテンツ スクリプトは問題がなかったので、変更しませんでした。

デモンストレーション

出力:

ここに画像の説明を入力

ここに画像の説明を入力

さらに情報が必要な場合はお知らせください..

于 2012-12-02T18:34:13.027 に答える