54

ブラウザのアクションアイコンをクリックするとURLにリダイレクトされるChrome拡張機能を作成しています。

私が使おうとしているのは:

chrome.browserAction.onClicked.addListener

しかし、私は得る

Uncaught TypeError:未定義のプロパティ'onClicked'を読み取ることができません

これは私のマニフェストファイルです:

{
    "name": "first extension",
    "version": "2.2.12",
    "description": "redirct to a link icon",
    "browser_action": {
        "default_icon": "icontest.png",
        "default_title": "Do action"
    },
    "permissions": ["tabs", "http://*/*"],
    "content_scripts": [{
        "matches": ["http://*.twitter.com/*", "https://*.twitter.com/*"],
        "js": ["twterland.js"]
    }],
    "icons": {
        "16": "icontest.png",
        "48": "icontest.png",
        "128": "icontest.png"
    }
}

これは私のjsファイルです:

chrome.browserAction.onClicked.addListener(function(tab) { alert("hi"); });
4

7 に答える 7

150

クラシック マニフェストV2

すでに何かを追加している人のために

"background": {
    "scripts": ["background.js"]
}

それでも取得しますCannot read property 'onClicked' of undefined-追加するだけです

"browser_action": {}

manifest.json に

マニフェストV3

manifest.json: actionnotを使用します。移行ガイドbrowser_actionも参照してください。

"background": {"service_worker": "background.js"}
"action": {}

background.js: 使用しchrome.actionないでchrome.browserActionください。

于 2016-07-12T20:18:15.797 に答える
23

コードはtwterland.jsコンテンツスクリプトであるファイルにあるようです。browserActionは拡張ページでのみ使用できるため、コンテンツ スクリプトでは使用できません。

ドキュメント: https://developer.chrome.com/extensions/content_scripts

ただし、コンテンツ スクリプトにはいくつかの制限があります。- chrome.* API を使用する( chrome.extensionの一部を除く)
- 拡張機能のページで定義された 変数または関数を使用する - Web ページまたは他のコンテンツ スクリプトで定義された変数または関数を使用する

代わりに背景ページに配置します。

于 2012-07-15T18:19:19.317 に答える
19

"browser_action"でプロパティが定義されていない場合manifest.json、このエラーが発生する可能性があります。@Kirillの答えは機能しますが、空のicon.pngファイルも追加する必要があります。そうしないと、クロムはそのようなファイルが見つからないというエラーをスローします。

manifest.jsonこれをファイルに追加すると、これエラーになります:

"browser_action": {}

設定 の使用方法については、ドキュメントを参照してください。"browser_action"

于 2017-02-21T21:52:38.480 に答える
4

私もこれを取得していました。

"persistent": true 

manifest.json の私のバックグラウンド宣言にそれを解決しました。

于 2017-12-10T23:20:42.500 に答える