我无法在Firefox扩展程序中加载NPAPI插件。我现在正在这样做的方式是插件已经在Windows中注册,所以我通过叠加加载嵌入元素,该叠加被注入到chrome&通过window.onload访问。显然加载了NPAPI元素,但我无法访问任何本机函数。
这是我的main.xul:
<overlay ...>
<window id="main-window">
<embed type="application/x-myplugin" id="myplugin" width="300" height="300"></embed>
</window>
</overlay>
我设置宽度/高度值,这样我就可以看到插入到chrome中的嵌入。
这是我的js:
window.addEventListener("load", function () {
var plugin = document.getElementById("myplugin");
dump(plugin + "\n");
dump("version: " + plugin.version + "\n");
});
转储:
[object XULElement]
undefined
如果将相同的嵌入代码放入HTML文档中,plugin.version将返回“1000”。 NPAPI插件已确认正常工作,因为我可以在HTML文档中使用它并加载到Chrome扩展程序中。
我有什么问题吗?请注意,我必须在chrome中加载NPAPI插件,而不是将其按需注入页面,因为需要从与网页分开的其他对话框中检索属性。也许还有另一种加载NPAPI插件的方法,每次浏览器加载都可以加载一次,可以从Firefox扩展中调用。
如果有任何帮助,NPAPI是使用Firebreath框架构建的。
注意:我已经完成了这个帖子:link显然可以加载插件但仍然无法访问任何函数。
感谢。
答案 0 :(得分:1)
XUL中没有<embed>
标记,您的意思是使用HTML <embed>
标记。对此标记使用HTML命名空间:
<embed xmlns="http://www.w3.org/1999/xhtml" ...></embed>