在Firefox扩展中使用Firebreath生成的插件?

时间:2011-06-01 23:36:56

标签: dll firefox-addon xpcom firebreath

是否可以在Firefox扩展程序中使用Firebreath制作的.dll?

目前,我正在尝试移植我为Google Chrome制作的扩展程序,该扩展程序使用javascript获取文档的HTML,然后从.dll调用函数并将文档的HTML作为参数传递。然后.dll将保存文件并启动程序。

有没有一种简单的方法可以将此功能移植到Firefox?或者我是否必须使用XPCOM重写代码?

3 个答案:

答案 0 :(得分:3)

XPCOM对于简单的事情来说太复杂了,这就是为什么Firefox 4及更高版本具有js-ctypes的原因(参见https://developer.mozilla.org/en/js-ctypes获取概述,https://developer.mozilla.org/en/js-ctypes/Using_js-ctypes#Calling_Windows_routines获取示例)。这允许您加载DLL并轻松调用导出的本机函数。如果你真的需要将这个DLL用作NPAPI插件,事情会变得更加复杂,因为你需要一个窗口来加载插件,而Firefox不像Chrome那样没有专用的背景窗口。但我想你只是将你的DLL变成了一个插件才能在Chrome中使用它。

在找到要与ctypes.open()一起使用的DLL时,请在此处查看我的答案:Reference a binary-component to js-ctypes

答案 1 :(得分:0)

对于简单的功能,我还推荐js-ctypes。它易于使用并提供良好的隔离(因为页面上的脚本无法访问导入的库)。

如果您确实需要从任何页面访问NPAPI插件,标准方法似乎是创建扩展并修改每个页面的DOM以包含插件:

Scriptable NPAPI plugin doesn't work with Firefox

答案 2 :(得分:0)

是的,你可以使用firebreath dll作为firefox扩展。你可以使用相同的javascript和Firefox的一些修改,你必须使用XUL的HTML。您必须在XUL中加载脚本,该XUL覆盖默认的firfox browser.xul

overlay chrome://browser/content/browser.xul chrome://Yourproject/content/Youroverlay.xul

在Youroverlay.xul中,您可以添加以下行来嵌入Firebreath dll

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/"?>
<overlay id="myOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml">
<script type="application/javascript" src="chrome://Yourproject/content/background.js"/>
    <vbox style="height:0;">
        <html:embed type="application/x-myproject" id="myproject1" style="height:0;"/>
    </vbox>
</overlay>