2

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

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

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

4

3 回答 3

3

XPCOM is too complicated for simple things which is why Firefox 4 and above has js-ctypes (see https://developer.mozilla.org/en/js-ctypes for an overview and https://developer.mozilla.org/en/js-ctypes/Using_js-ctypes#Calling_Windows_routines for an example). This allows you to load the DLL and call an exported native function easily. If you really need to use this DLL as an NPAPI plugin things get more complicated because you need a window to load the plugin into and Firefox unlike Chrome doesn't have a dedicated background window for that. But I guess that you only turned your DLL into a plugin to be able to use it in Chrome.

On locating your DLL to use with ctypes.open() see my answer here: Reference a binary-component to js-ctypes

于 2011-06-06T18:29:15.760 回答
0

是的,您可以使用 firebreath dll 作为 firefox 扩展。您可以对 Firefox 和 HTML 使用相同的 javascript 并进行一些修改,您必须使用XUL。您必须在覆盖默认 firfox 的 XUL 中加载脚本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>
于 2013-08-21T11:23:45.610 回答
0

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

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

可编写脚本的 NPAPI 插件不适用于 Firefox

于 2011-09-27T16:36:38.753 回答