2011-09-17 57 views
0

我无法在Firefox扩展中加载NPAPI插件。我现在这样做的方式是插件已经在Windows中注册,所以我通过覆盖层加载嵌入元素,注入到通过window.onload访问的铬合金&中。显然,NPAPI元素已加载,但我无法访问任何本机函数。无法访问Firefox扩展中的NPAPI功能

这是我的main.xul:

<overlay ...> 
    <window id="main-window"> 
    <embed type="application/x-myplugin" id="myplugin" width="300" height="300"></embed> 
    </window> 
</overlay> 

我设置宽度/高度值,所以我可以看到插入到铬嵌入。

这里是我的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

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

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

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

+0

非常感谢!这解决了它。 –