0

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

但是当我尝试调用该函数时,我得到了 Javascript 异常,因为该变量为空。

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 保存在其中,但没有成功

请帮我走,

谢谢

4

2 回答 2

1

“嵌入在 XUL 中”

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

您应该定义 HTML 命名空间并在 html 命名空间中使用 embed 标记

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

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

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

肯定是可行的。你能在某处放置一个演示问题的 XPI 吗?

于 2010-02-21T00:09:41.310 回答
0

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

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

可编写脚本的 NPAPI 插件不适用于 Firefox

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

在 Firefox 扩展中使用由 Firebreath 生成的插件?

于 2011-09-27T16:45:43.757 回答