chrome.browserAction.onClicked.addListener不工作

vktxenjb  于 2023-08-01  发布在  Go
关注(0)|答案(2)|浏览(213)

我正在创建一个chrome扩展,但我的browser action不工作。
我的清单,杰森

{
    "name": "TypoSaurus",
    "version": "0",
    "description": "TypoSaurus extension",
    "background": {
        "page": "background.html"
    },
    "manifest_version": 2,
    "browser_action": {
        "name": "TypoSaurus",
        "icons": ["icon.png"],
        "default_icon": "icon.png"
    },
    "content_scripts": [{
            "js": ["jquery-2.0.2.min.js", "background.js"],
            "css": ["customStyles.css"],
            "matches": ["http://*/*", "https://*/*"]
        }],
    "permissions": ["<all_urls>"]
}

字符串
我的background.js

function typo (tab) {

  alert('test');
}

chrome.browserAction.onClicked.addListener(typo);


我收到的错误是
未捕获的类型错误:无法读取未定义的属性“onClicked”

a1o7rhls

a1o7rhls1#

将脚本命名为background.js并不会神奇地使其成为后台脚本!
它仍然被定义为清单中的内容脚本,并且内容脚本具有severely restricted access to Chrome API。这会导致您遇到的错误。
单击按钮等事件的侦听器应该从一个中心位置完成;这就是background page(更好的是event page)的目的。您应该这样声明您的脚本,并在需要时向内容脚本广播message
总之,请仔细阅读架构概述,它将对您有很大帮助。

r6l8ljro

r6l8ljro2#

您可以在background.html文件中添加脚本标记,如下所示。

<script src="background.js"></script>

字符串
通过这种方式,您可以使用后台脚本。
当前代码的问题

  • chrome.browserAction.onClicked只能在后台脚本中工作。

(内容脚本无权访问此内容)

  • 现在你的background.js文件作为内容脚本工作,因为你已经提到了在content_scripts数组中。

相关问题