从Firefox扩展调用NPAPI插件功能
我已经编写了一个NPAPI插件,它实现了所需的所有逻辑,现在我正在编写一个扩展,希望使用插件中提供的功能。这种架构为我提供了一个机会,可以为Mozilla Firefox和谷歌浏览器编写相同的C++代码。 在Chrome中,我通过将从Firefox扩展调用NPAPI插件功能,firefox,npapi,browser-plugin,Firefox,Npapi,Browser Plugin,我已经编写了一个NPAPI插件,它实现了所需的所有逻辑,现在我正在编写一个扩展,希望使用插件中提供的功能。这种架构为我提供了一个机会,可以为Mozilla Firefox和谷歌浏览器编写相同的C++代码。 在Chrome中,我通过将构造写入扩展所拥有的单独文档(它自动提供给我的Chrome插件),来实例化插件中定义的对象。这很管用。在C++代码中,我执行插件对象构造函数中需要的所有工作。 我无法轻松地调整我的解决方案以在Firefox中使用它,因为扩展没有任何单独的文档支持,并且我的扩展没有写入
构造写入扩展所拥有的单独文档(它自动提供给我的Chrome插件),来实例化插件中定义的对象。这很管用。在C++代码中,我执行插件对象构造函数中需要的所有工作。
我无法轻松地调整我的解决方案以在Firefox中使用它,因为扩展没有任何单独的文档支持,并且我的扩展没有写入任何已呈现文档的权限
我最常见的问题是,如何多次使用插件提供的功能,并在用户单击按钮或在下拉菜单中选择我的条目时将参数列表传递给我的本机函数(即,带参数的方法应在特定事件后调用,而不只是在任意时间)
"补充问题包括:
如何在Mozilla Firefox中实例化插件?我在哪里可以得到FF“解释”的文档,这样扩展就可以写入它 我自己不知道怎么做,但这里有一个开源的firefox扩展可以做到这一点:您的firefox扩展需要使用“”。对于浏览器的不同部分,有许多类型的覆盖,它们在指定文档中加载(覆盖),如文件中定义的那样 例如,以下内容将应用于“browser.xul”文件(这是主浏览器窗口) 现在,在该文件中,您可以加载插件对象并调用插件提供的方法 下面是一个示例XUL文件,它只不过加载内容类型为“application/x-example-plugin”的NPAPI插件,并将插件对象分配给变量“myPlugin”
myPlugin=document.getElementById(“myPlugin”);
myPlugin=document.getElementById(“myPlugin”);
警报(myPlugin.someFunction());
需要注意的一些重要事项
true
overlay chrome://browser/content/browser.xul content/firefoxOverlay.xul
<script type="text/javascript">
myPlugin = document.getElementById("myPlugin");
</script>
<?xml version="1.0" encoding="UTF-8"?>
<overlay id="myOverlay" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="text/javascript">
myPlugin = document.getElementById("myPlugin");
alert(myPlugin.someFunction());
</scrpit>
<window id="main-window">
<vbox collapsed="true">
<html:object id="myPlugin" type="application/x-example-plugin" height="1" width="1" style="visibility:hidden;"></html:object>
</vbox>
</window>
</overlay>