Firefox addon 在Firefox扩展中使用NPRuntime插件

Firefox addon 在Firefox扩展中使用NPRuntime插件,firefox-addon,npruntime,Firefox Addon,Npruntime,我已经成功地在网页上运行了NPRuntime插件,将其复制到firefox插件目录。我想用它创建一个firefox扩展,所以我创建了一个小扩展,它在状态栏上显示一个文本框和一个按钮,button click调用一个javascript函数,该函数从文本框中获取值,并作为参数传递给嵌入XUL的NpRuntime插件中的函数 但当我尝试调用该函数时,会出现Javascript异常,因为该变量为null try{ var myplugin=document.getElementById("myplug

我已经成功地在网页上运行了NPRuntime插件,将其复制到firefox插件目录。我想用它创建一个firefox扩展,所以我创建了一个小扩展,它在状态栏上显示一个文本框和一个按钮,button click调用一个javascript函数,该函数从文本框中获取值,并作为参数传递给嵌入XUL的NpRuntime插件中的函数

但当我尝试调用该函数时,会出现Javascript异常,因为该变量为null

try{
var myplugin=document.getElementById("myplugin");
myplugin.test(document.getElementById("txtUri").value);// calling function
}catch(e){
alert(e.message); //throws the error as myplugin is null
}
当我删除函数调用时,没有错误,因此嵌入标记会被javascript识别。我在firefox插件目录中保存了一个插件dll我还尝试在扩展根目录下创建插件目录,并将我的dll保存在其中,但没有成功

请帮我走

谢谢

“它嵌入到XUL中”

怎么做?我打赌您在XUL名称空间中使用,它没有任何特殊意义

你应该

当我删除函数调用时,并没有错误,所以嵌入标记会被javascript识别

这是错误的。如果删除函数调用,就不会有代码失败——getElementById永远不会抛出(至少在这种简单的情况下不会)。这并不表示您的XUL代码很好

我还尝试在扩展根目录下创建一个插件目录,并将我的dll保存在其中,但没有成功


就是。你能把一个XPI放在某个地方演示这个问题吗?

从Firefox扩展调用NPAPI插件是很棘手的。一个看起来有点像黑客的选项是将插件实际注入到代表浏览器UI的DOM中

更好的选择是在页面加载到浏览器时修改页面的DOM:

或者您可以完全跳过NPAPI插件,使用js ctypes: