无法访问Firefox扩展中的NPAPI功能

时间:2011-09-17 23:31:15

标签: javascript firefox npapi

我无法在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显然可以加载插件但仍然无法访问任何函数。

感谢。

1 个答案:

答案 0 :(得分:1)

XUL中没有<embed>标记,您的意思是使用HTML <embed>标记。对此标记使用HTML命名空间:

<embed xmlns="http://www.w3.org/1999/xhtml" ...></embed>

其他信息:https://developer.mozilla.org/en/Namespaces