我想在浏览器中加载的每个页面上运行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中的确切位置?
答案 0 :(得分:1)
你需要制作一个framecript,这是完整的例子,你在DOM中执行的脚本应该进入contentscript.js文件:https://github.com/Noitidart/modtools
如果您使用addon-sdk,它会为您处理此问题,我不愿意这就是为什么我上面链接的repo就是这样做的。