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



是否可以在Firefox扩展中使用用Firebreath创建的.dll?

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

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

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

关于定位要与ctypes.open()一起使用的DLL,请参阅我的答案:将二进制组件引用到js-cypes-

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

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

可编写脚本的NPAPI插件没有';无法使用Firefox

是的,您可以使用firebreath dll作为firefox扩展。您可以使用相同的javascript,但对Firefox和HTML进行一些修改,您必须使用XUL。您必须在覆盖默认firfox的browser.xul 的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>

最新更新