3

非常に単純な Chrome 拡張機能を作成しようとしています。この時点では、ブラウザのアクション アイコンがクリックされたときにアラートを表示しようとするポップアップ HTML ファイルだけです。アラートが発生しないため、明らかに何か間違ったことをしています。

マニフェスト.json

{
  "name": "Simple",
  "description": "Simple",
  "version": "1.0",
  "browser_action": {
    "default_title": "Simple",
    "default_icon": "images/icon.png",
    "default_popup": "popup.html"
  },
  "manifest_version": 2
}

popup.html

<html>
<head>
    <script>
        //Executed when the extension's icon is clicked
        chrome.browserAction.onClicked.addListener(function(tab) 
        { 
            alert("gah");
        });
    </script>
</head>

<body>
    Hello World!
</body>
</html>

私も試しました:

<html>
<head>
    <script>

        function onPageLoad()
        {
            //Executed when the extension's icon is clicked
            chrome.browserAction.onClicked.addListener(function(tab) 
            { 
                alert("gah");
            });
        }

    </script>
</head>

<body onload="onPageLoad()">
    Hello World!
</body>
</html>

回答に基づく更新 回答ありがとうございます。次の変更を加えましたが、まだ browser.Action.onClicked() が呼び出されていません (アラートの代わりに console.log() を使用していることがわかります) (グローバル スコープのログが表示され、内部のログが表示されます)。コールバックはそうではありません)。

マニフェスト.json

{
  "name": "Simple",
  "description": "Simple",
  "version": "1.0",
  "permissions": ["tabs", "http://*/*", "https://*/*"],
  "background": {
    "persistent": false,
    "scripts": ["popup.js"]
  }, 
  "browser_action": {
    "default_title": "Simple",
    "default_icon": "images/icon.png",
    "default_popup": "popup.html"
  },
  "manifest_version": 2
}

popup.html

<html>
<head>
    <script type="text/javascript" src="popup.js"></script>
</head>

<body>
    <div style="white-space: nowrap">
        Hello World!
    </div>
</body>
</html>

popup.js

console.log("Running at global scope")

//Executed when the extension's icon is clicked
chrome.browserAction.onClicked.addListener(function(tab) 
{ 
    console.log("Running insode of addListener()");
});
4

2 に答える 2

9

chrome.browserAction.onClickedポップアップ内では使用できません。あまり意味がありません.ブラウザーアクションアイコンがクリックされた後、クリックされるのをリッスンし始めます. もう一度クリックすることはできますが、ポップアップは閉じられ、何かが起こる前にリスナーが終了します。 chrome.browserAction.onClickedバックグラウンドページで使用され、ブラウザアクションのポップアップが使用されていない場合にのみ使用されることになっています:

ブラウザ アクションにポップアップがある場合、このイベントは発生しません。

ソース

おそらく次のように書く必要があります。

<script>
        alert("gah");
</script>

しかし、アラートがポップアップで機能するかどうかはわかりません。次のようなものを試してみてください:

<script>
        document.getElementsByTagName('body')[0].innerHTML = "gah";
</script>

編集

拡張機能で修正すべきことがもう 1 つあります。@Cody が彼の回答で示唆したように、インライン スクリプトを使用すべきではありませんでした。セキュリティ上の理由からブロックされています。上記で提案したコードを取得し、別の JavaScript ファイルに入れてから、popup.htmlheadに含めます。

<script src='script.js' type='text/javascript'></script>
于 2012-10-03T11:53:44.320 に答える
1

改訂されたChromeセキュリティポリシーによると、Chrome拡張機能はpopup.htmlhttp://developer.chrome.com/extensions/contentSecurityPolicy.html#jsexecutionでインラインJavaScriptを使用できなくなります

以下にコード化されているように、JSファイルを作成し、Manifest.jsonにその存在について記載する必要があります。

マニフェスト.json

{
  "name": "Simple",
  "description": "Simple",
  "version": "1.0",
  "background": {    
    "scripts": ["bg.js"] //Here you can name the JS file that you have created
  },
  "browser_action": {
    "default_title": "Simple",
    "default_icon": "images/icon.png",
    "default_popup": "popup.html"
  },
  "manifest_version": 2
}

popup.html

<html>
<head>
    <script>
        //Executed when the extension's icon is clicked         
            alert("gah");
    </script>
</head>

<body>
    Hello World!
</body>
</html>

http://developer.chrome.com/extensions/overview.htmlおよびhttp://developer.chrome.com/extensions/getstarted.htmlから参照して、マニフェストバージョン2に従ってChrome拡張機能の構築を開始できます。

于 2012-10-03T11:58:37.333 に答える