通过将NPRuntime插件复制到firefox目录,我已经成功地在网页上运行了它。我想使用它创建一个firefox扩展,所以我创建了一个小扩展,它在状态栏上显示一个文本框和一个按钮,单击按钮调用一个javascript函数,该函数从textbox获取值,并作为参数传递给嵌入在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保存在其中,但它没有成功。
请帮我走,
谢谢
发布于 2010-02-21 00:09:41
“嵌入在XUL中”
多么?我打赌您在XUL名称空间中使用,它没有任何特殊的含义。
你应该定义HTML命名空间并在html命名空间中使用嵌入标记。
当我删除函数调用时,没有错误,因此嵌入标记被javascript识别。
这是错误的。如果删除函数调用,就没有代码可以失败-- getElementById从不抛出(至少在这样简单的情况下不会抛出)。这并不表示您的XUL代码是好的。
我也尝试在扩展根目录下创建一个插件目录,并将我的dll保存在其中,但是它没有成功。
那是肯定会起作用的。你能在某个地方放一个XPI来演示这个问题吗?
发布于 2011-09-27 16:45:43
从Firefox扩展中调用NPAPI插件是很棘手的。其中一个选项似乎有点麻烦,就是将插件实际注入DOM中,DOM表示浏览器UI。
一个更好的选择是在页面加载到浏览器时修改它们的DOM:
或者您可以跳过NPAPI插件,使用js-ctype:
https://stackoverflow.com/questions/2302582
复制相似问题