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

时间:2015-07-04 14:48:05

标签: javascript google-chrome google-chrome-extension

的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>中,而不会发生任何冲突。

1 个答案:

答案 0 :(得分:3)

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

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