在Firefox扩展中使用NPRuntime插件

时间:2010-02-20 15:03:27

标签: firefox-addon npruntime

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

但是当我尝试调用该函数时,我得到了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,但它没有成功

请帮助我开始,

感谢

2 个答案:

答案 0 :(得分:1)

  

“它嵌入在XUL中”

如何?我打赌你用< embed>在XUL命名空间中,它没有任何特殊含义。

你应该define the HTML namespace and use the embed tag in the html namespace

  

当我删除函数调用时没有错误,因此嵌入标记被javascript识别。

这是错误的。如果删除函数调用,则没有代码可以失败 - getElementById永远不会抛出(至少在这种简单的情况下不会抛出)。这并不表示您的XUL代码没问题。

  

我还尝试在扩展根目录下创建一个插件目录并保留我的dll,但它没有成功。

那是definitely supposed to work。你能把XPI用于演示问题吗?

答案 1 :(得分:0)

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

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

Scriptable NPAPI plugin doesn't work with Firefox

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

Using a plugin generated with Firebreath in a Firefox Extension?