Firefox扩展:从网页js调用功能

时间:2014-06-01 12:33:11

标签: javascript firefox-addon firefox-addon-sdk

我正在尝试将一些无聊,重复的数据输入自动化到工作中的Web应用程序中。 我很抱歉,如果答案是众所周知的,但我已经花了几个小时在谷歌试图搞清楚。 问题是,在基于网络的应用程序中,没有一个链接是简单的HTML,'a href'类型链接,它们使用javascript。

我可以在其中一个.js文件中看到该网站在点击链接时调用的函数定义如下

function sendEvent(eventtype, targetid, value)

...并且使用Firefox调试器我可以看到,为了进行我想要做的简单页面导航,我的扩展必须调用网站js函数,如下所示('value'parm可以为null)< / p>

 sendEvent("click", "mx709")

我发现了this类似的问题。建议的方法是

content.wrappedJSObject.funcFromPage()

getBrowser().contentWindow.wrappedJSObject.funcFromPage();

...但是在我的扩展程序中运行这些行中的任何一行似乎都没有调用该函数,因此“点击”我想要点击的链接

编辑1 - 如果不清楚,我实际放入扩展程序的代码是:

content.wrappedJSObject.sendEvent("click", "mx709[R:3]");

编辑2 - 也试过这个,没有骰子。我打开了Firefox调试器,并在'sendEvent()'函数的顶部打开了一个断点。每当我点击这个网络应用程序中的链接时,我点击了断点,当我尝试上面(或以下)的行时,断点没有被触发

window.content.document.defaultView.wrappedJSObject.sendEvent("click", "mx709[R:3]");

1 个答案:

答案 0 :(得分:0)

wrappedJSObject方法应该有效。

打开暂存器并复制粘贴:

var indexOfTabWithMyDocument = 1; //1 means 2nd tab, 0 is first tab
Services.wm.getMostRecentWindow('navigator:browser').gBrowser.tabContainer.childNodes[indexOfTabWithMyDocument].contentWindow.wrappedJSObejct.FUNCTIONTORUN()

将暂存器的环境设置为浏览器。并运行。它会起作用。