如何使用Firefox扩展将JavaScript函数注入到所有网页

How*_*ard 4 javascript firefox greasemonkey firefox-addon

我正在开发一个Firefox插件.我想要做的是注入自定义JavaScript函数.

function foo() {..}
Run Code Online (Sandbox Code Playgroud)

因此,所有页面都可以调用foo而无需先定义它.

我从其他答案中了解到:http://groups.google.com/group/greasemonkey-users/browse_thread/thread/3d82a2e7322c3fce

但它需要在网页上进行修改.如果我想将函数foo注入Google.com怎么办?有可能这样做吗?

我可以使用usercript来完成它,但是如果可能的话我想使用扩展方法.

Reu*_*ais 6

我在阅读你的问题时首先想到的是"这看起来像一个骗局".你想要实现什么目标?

无论如何,这是一个Jetpack(加载项构建器)加载项,它在每个加载的页面中注入一个脚本:

main.js:

const self = require("self"),
      page_mod = require("page-mod");

exports.main = function() {
    page_mod.PageMod({
        include: "*",
        contentScriptWhen: "ready",
        contentScriptFile: self.data.url("inject.js")
    });
};
Run Code Online (Sandbox Code Playgroud)

inject.js:

unsafeWindow.foo = function() {
    alert('hi');
}

unsafeWindow.foo();
Run Code Online (Sandbox Code Playgroud)

  • 我怀疑这会起作用 - 网页无法访问您的功能.你应该在`unsafeWindow`而不是`window`上设置属性`foo`. (2认同)