的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.js
文件和detector.js
文件(内容脚本),请执行以下操作:
<script src="../js/options.js"></script>
<script src="../js/detector.js"></script>
然后他们都在干扰chrome.storage
。我当然可以检查一下像if(!data_already_modified) then do this;
这样的detector.js,但这是我作为最后手段的一种黑客攻击。所以,我的问题是:
我希望我的内容脚本能够在选项页面中运行,就像在普通网页上一样。有没有比将内容脚本链接为<script>
元素更好的方法?
就这么简单。
更新: Emrys评论说,“选项页面可以作为普通网页使用,包括一个与普通网页完全相同的脚本”。我无法验证这种说法,因为我问过这个问题,我设法将我的内容脚本分成两个单独的文件 - 一个用于按键操作,另一个用于数据存储处理。这样我就可以通过options.html
标记将前一个文件包含到<script>
中,而不会发生任何冲突。
答案 0 :(得分:3)
您必须在选项页面HTML文件中链接内容脚本的javascript文件,如下所示:
<script src='detector.js'></script>