在chrome上自己的扩展javascript不起作用



我查看了这个网站和其他几个网站(但在这个网站上你会得到更具体的答案,所以这很好(但我似乎找不到正确的答案。很多人问过类似的问题,但我的问题似乎仍然存在。

我正在尝试制作一个Chrome扩展程序,通过快捷方式获取某些标题中的文本。我对脚本相当陌生,所以我的工作方式是逐步完成所有操作。我已经在第一步失败了。

我就去吧。这是我的清单.json:

{
"name": "grab some",
"description": "grab some texts from html titles",
"version": "1.0",
"manifest_version": 2,
"content_scripts": [ {
"js": [ "content_scripts.js" ],
"matches": [ "*://something.com/*"]
} ]
}

这是我的content_scripts.js:

document.onkeyup=function(y){
if(y.ctrlKey && y.which == 89) {
alert('Keyboard shortcut working!');
return false;
}
};
document.addEventListener('keyup', doc_keyUp, false); 

我一直一无所获。如果我把content_scripts.js的确切代码放在一个javascript应用程序(cjs-extension(中。然后它完美地工作。我的问题只是:为什么当我尝试在自己的扩展中执行此操作时它不起作用?

顺便说一句;我提问的方式会有一些错误,对此感到抱歉。但我希望你明白我想问什么。

你的扩展对我来说很好。我只是把它放到两个文件(manifest.json和content_scripts.js(中,然后通过Chrome ->扩展>加载解压缩的扩展(激活开发人员模式后(加载它。但是,我将"某些内容"更改为我实际可以访问的页面("matches": [ "*://stackoverflow.com/*"](。

这给我留下了以下内容:

  • 你也是德国人,使用带有德语键盘的英文键盘布局并按 ctrl+y,结果是 ctrl+z(不是开玩笑,这是我的第一个错误(
  • 您的matches模式实际上不匹配。单击扩展页面上的"详细信息",对我来说,它说"权限:在 stackoverflow.com 上读取和更改您的数据"。
    • 侧节点上,因为它在评论中提到:当你的模式实际上完全是废话时,Chrome会在扩展页面上告诉你。显然,这并不意味着它确实匹配,而事实并非如此。
  • 请注意,您不能简单地在"匹配"中输入任何内容并在任何其他页面上使用该扩展。这是行不通的。
  • 其他一些事件正在捕获您的事件,即useCapture设置为 true 的addEventListener(请参阅参考资料(
  • 您已经修复了该错误,但忘记在扩展页面上单击"重新加载"(当我编写扩展时,这种情况发生在我身上很多次(
  • 必须先刷新页面,然后扩展才能插入内容脚本。

哦,已经提到的:你的第二个addEventListener是抛出错误,因为函数不存在。

未捕获的引用错误: 未定义doc_keyUp 在 content_scripts.js:8

但是,在我的测试中,这不是问题。

最新更新