如何在Firefox扩展中的另一个内容脚本(在同一事件上运行)之前加载内容脚本



这是我的manifest.json文件的一部分:

"content_scripts": [ {
"js": [ "common.js", "generation.js" ],
"matches": [ "*://www.site.com/*" ],
"run_at": "document_start"
},
{
"js": [ "page_init.js" ],
"matches": [ "*://www.site.com/*" ],
"run_at": "document_start"
},

在这里,我想运行";common.js";在";js";,as common.js包含许多其他内容脚本所需的共享代码、全局变量和函数。我在清单中的page_init.js之前定义了common.js,在Chrome中,这样做会导致common.js在所有其他内容脚本之前运行,这正是我所需要的。然而,在Firefox中,它似乎并没有做到这一点。

然而,当我在Firefox中运行这个扩展时,page_init会抛出一个错误:

ReferenceError: ReferenceError: href is not defined

"href"是common.js.中定义的变量

我需要让page_init.js在document_end上运行才能让common.js完全运行吗?或者还有其他方法吗?我需要它们都在document_start上运行。

更新:

我设法通过将清单内容更改为以下内容来解决问题:

"content_scripts": [ 
{
"js": [ "common.js", "generation.js", "page_init.js" ],
"matches": [ "*://www.site.com/*" ],
"run_at": "document_start"
},

来自firefox文档:

js

一个路径数组,相对于manifest.json,引用JavaScript将被注入到匹配页面中的文件。

文件是按照给定的顺序注入的。这意味着例如,如果在此处包含jQuery,然后再包含另一个内容脚本,如这

这可能是一个firefox错误,您可能需要报告它。

最新更新