从Firefox for Android插件加载后,在当前页面上运行JavaScript

时间:2015-09-07 12:45:48

标签: android firefox-addon

我想在浏览器中加载的每个页面上运行JavaScript。 JavaScript只应在加载页面后运行,并且需要访问DOM中的所有元素。

我能够在Scratchpad中成功执行以下JavaScript,但是在将其移植到我的bootstrap.js时遇到了问题。

// Use the current content window as the execution context.
// To make properties defined by scripts executing on the page
// available to your sandbox script, use content.wrappedJSObject
// instead.
let context = content;

// Create the Sandbox
let sandbox = Components.utils.Sandbox(context, {
    // Make properties of the context object available via the
    // script's global scope
    sandboxPrototype: context,
    // Wrap objects retrieved from the sandbox in XPCNativeWrappers.
    // This is the default action.
    wantXrays: true
});

// The script that will be executed:
let script = "document.body.style.background = 'red'; alert('test')";

// Evaluate the script:
Components.utils.evalInSandbox(script, sandbox,
                               // The JavaScript version
                               "1.8",
                               // The apparent script filename:
                               "zz-9://plural/zed/alpha",
                               // The apparent script starting line number:
                               42);

是否有人可以了解上述代码在bootstrap.js中的确切位置?

1 个答案:

答案 0 :(得分:1)

你需要制作一个framecript,这是完整的例子,你在DOM中执行的脚本应该进入contentscript.js文件:https://github.com/Noitidart/modtools

如果您使用addon-sdk,它会为您处理此问题,我不愿意这就是为什么我上面链接的repo就是这样做的。