1

初めての chrome 拡張機能を作成しようとしていますが、拡張機能を特定のページにのみ表示したいので、page_action.

マニフェスト.json

{
    "name": "First",
    "version": "1.0",
    "manifest_version": 2,
    "description": "First extension",

    "page_action": {

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

    "permissions" : [
        "tabs"
    ]
}

popup.html

<html>
    <head>
        <script src="test.js"></script>
    </head>
    <body> Some other logic </body>
</html>

test.js

function check(tab_id, data, tab){

    if(tab.url.indexOf("google") > -1){
        chrome.pageAction.show(tab_id);
        alert("inside");

    }

    chrome.tabs.onUpdated.addListener(check);
};

今、アイコンを開いgoogle.comたときに拡張機能をロードした後、アイコンが表示されず、JavaScript関数も呼び出されません。

では、このアプローチのどこが間違っているのでしょうか。

クロムバージョン 24.0.1312.2 Ubuntu 12.04 (165266)

4

1 に答える 1

2

これが機能するには、タブの更新をリッスンするバックグラウンド スクリプトが必要です。次のようにマニフェストを更新する必要があります。

{
    "name": "First",
    "version": "1.0",
    "manifest_version": 2,
    "description": "First extension",
    "background": { "scripts": ["test.js"] },
    ....

また、リスナーを関数内に設定しているため、実行されることはありません。

関数の外に移動すると、機能するはずです

function check(tab_id, data, tab){
    if(tab.url.indexOf("google") > -1){
        chrome.pageAction.show(tab_id);
        alert("inside");

    }

};

chrome.tabs.onUpdated.addListener(check);
于 2012-12-29T08:18:31.983 に答える