我正在尝试使用pageMod在页面加载时运行脚本:
但我看不到它的效果

var data = require("sdk/self").data;
var attachTo = require("sdk/content/mod").attachTo;
var pageMod = require("sdk/page-mod");

pageMod.PageMod({
  include: "*",
   contentScriptWhen: "start",
  allow:true,
   attachTo: ["existing", "top"],
  contentScriptFile: [data.url("jquery-2.1.1.min.js"),
                     data.url("somejs.js")],


})

在我的somejs.js文件中,我覆盖了表单提交功能:
document.forms['frmMain'].submit=function submit(){alert("Submitting")...
...do some stuff

};

我的网页上有一个提交表单的按钮:
    frmMain.method="post"
    frmMain.action = "someurl";
    frmMain.submit();

但是,当我单击按钮时,它不会调用我上面定义的替代方法。
当我使用Firebug控制台覆盖该功能时,它起作用了!
因此,firebug是如何运行命令的,以便我可以在自己的附加代码中执行相同的操作来实现相同的功能。

最佳答案

Interacting with page scripts您会

  • 需要使用unsafeWindow,以便将更改反射(reflect)在内容脚本和
  • 需要正确地从内容脚本中导出功能,以便可以从页面脚本中进行调用。

  • 以下对我有用:
    function submit() {
      console.log("Submitting");
      alert("Submitting");
    };
    unsafeWindow.document.forms['frmMain'].submit =
      exportFunction(submit, unsafeWindow);
    

    关于javascript - FireFox插件: How to override native js function,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24850709/

    10-10 00:05