2

我正在寻找一种干净的方式来调用/执行/重新定义 javascript 代码从网页,在 Firefox 中,通过 Firefox 扩展。我的临时解决方案是使用暂存器(Shift-F4、Ctrl-A、Ctrl-V、Ctrl-R),它可以正常工作,但这是一个可悲的解决方法。Greasemonkey 将是我最后的手段,非常非常最后。

这是到目前为止的代码:

主.js:

exports.main = function() {
  var data = require("self").data;
  var pageMod = require("page-mod");
  pageMod.PageMod({
    include: "*.google.com",
    contentScriptFile: data.url("my-script.js")
  });
};

我的脚本.js

$('#mydiv').html('yo')
alreadyHere.sayHello=function (){alert('Bonjour');}


此代码在 my-script.js 的第 1 行停止,说明 $ 未定义。命名空间/范围的问题。

我怎样才能在网页的命名空间/范围内工作,从我的扩展程序,就像我使用暂存器一样?

编辑: firefox主窗口的window.content和网页上的hassHere.sayHello之间应该有一个链接,不是吗?

window.content.(things).alreadyHere.sayHello();

我在这里想念什么?

4

2 回答 2

1

是的。

window.content.document.defaultView.wrappedJSObject.$('#mydiv').html('yo')
window.content.document.defaultView.wrappedJSObject.alreadyHere.sayHello();

在此感谢 Mridang Agarwalla

于 2012-12-20T23:35:41.320 回答
0

您是否在 Firebug 控制台中尝试过?

并且,

确保您的代码在

$(document).ready(function () {
  //your code here
});

最重要的 jQuery 已正确加载

于 2012-12-20T15:36:27.163 回答