繁体   English   中英

内容脚本未在选项页面中注入

[英]Content script not being injected in options page

的manifest.json

"content_scripts": [{
    "js" : ["js/detector.js"],
    "matches": ["<all_urls>"],
    "all_frames": true,
    "run_at": "document_end"
}]

detector.js

(function () {
    "use strict";

    console.log("Injection");
    ....

我的扩展程序中有此设置。 detector.js侦听某些按键并执行所需的操作。 我希望它也可以在选项页面上工作,以便我可以帮助用户。 但它在那里不起作用。 我在文件的最顶部有console.log 但是,我在选项页面中看不到任何日志。

我的问题:
如何让我的内容脚本在选项页面上运行?

更新:现在我遇到了麻烦。 如果我在options页面中包含了options.js文件,它处理选项页面和detector.js文件(内容脚本),如:

<script src="../js/options.js"></script>
<script src="../js/detector.js"></script>

然后他们都在干扰chrome.storage 我当然可以检查if(!data_already_modified) then do this;比如if(!data_already_modified) then do this; 但这是我作为最后手段的一种黑客行为。 所以,我的问题:

我希望我的内容脚本能够在选项页面中运行,就像在普通网页上一样。 有没有比将内容脚本链接为<script>元素更好的方法?

就如此容易。

更新: Emrys评论说,“选项页面作为普通网页工作,包括一个与普通网页完全相同的脚本”。 我无法验证这种说法,因为我问过这个问题,我设法将我的内容脚本分成两个单独的文件 - 一个用于按键操作,另一个用于数据存储处理。 这样我就可以通过<script>标签将前一个文件包含到options.html ,而不会产生任何冲突。

您必须在选项页面HTML文件中链接内容脚本的javascript文件,如下所示:

<script src='detector.js'></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM