代码之家  ›  专栏  ›  技术社区  ›  Xinus

在firefox扩展中使用npruntime插件

  •  0
  • Xinus  · 技术社区  · 15 年前

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

    但是当我试图调用函数时,我得到了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保存在其中,但没有成功

    请帮我走,

    谢谢

    2 回复  |  直到 14 年前
        1
  •  1
  •   Nickolay    15 年前

    “嵌入在xul中”

    怎样?我打赌您在xul名称空间中使用了<embed>,它没有任何特殊含义。

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

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

    这是错误的。如果删除函数调用,就不会有代码失败了——getElementByID永远不会抛出(至少在这种简单的情况下不会)。这并不意味着你的xul代码是好的。

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

    那是 definitely supposed to work . 你能把一个演示这个问题的xpi放在什么地方吗?

        2
  •  0
  •   Community Mohan Dere    8 年前

    从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?

    推荐文章