【问题标题】:NPAPI mozilla plugin loading issueNPAPI mozilla 插件加载问题
【发布时间】:2013-05-31 07:22:44
【问题描述】:

我已经基于mozilla npruntime项目在MS中成功编译并创建了npapi dll。参考来自:https://developer.mozilla.org/en-US/docs/Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio。 启动 mozilla 并打开 about:plugins 显示插件。但是当我打开“test.html”时,插件没有出现。

我已经通过制作一个单独的测试应用程序测试了 dll,我可以通过它访问入口点函数 NP_INIT l_pInit= (NP_INIT)GetProcAddress(hModule, "NP_Initialize"); 我可以进入我的插件 dll 函数。

但是对于 Mozilla,它不起作用。请提出建议。

【问题讨论】:

  • 如果它没有出现在 about:plugins 中(是吗?),您可能缺少资源文件条目或者它们可能不正确(例如 using the wrong locale)。

标签: npapi browser-plugin


【解决方案1】:

您可以直接调试 mozilla 进程。只需附加到该过程。但是,现代浏览器使用单独的进程来加载第三方插件,因此您必须附加到该进程。你可以设置断点来加载例程(NP_GetEntryPointsNP_Initialize),看看那里发生了什么。

此外,如果您在附加到进程时遇到问题,您可以简单地从您的代码中显示调试对话框并缩小问题范围。

更新 1:

浏览器似乎不知道它应该使用该插件。您是否指定了插件的 MIME 类型?如果是这样,请在 HTML 页面中运行以下脚本:

   <embed type="application/x-my-extension" id="pluginId">
   <script>
    var plugin = document.getElementById("pluginId");
    var result = plugin.myPluginMethod();  // call a method in your plugin
    console.log("my plugin returned: " + result);
   </script>

x-my-extension替换为您在NP_GetMimeDescription 中使用的扩展名。如果浏览器正确注册了您的插件以获得正确的 MIME 类型,您应该检查 about:plugins

【讨论】:

  • Mozilla 有 plugin-container.exe 加载插件。但是当我运行 mozilla 浏览器时,我看不到它在进程列表中运行。附加到 firefox.exe 不起作用,也无法通过 VS 中的命令和参数选项进行调试。使用我的测试应用程序而不是 Mozilla 时会出现调试消息。
【解决方案2】:

听起来你的插件初始化很可能有问题;您可以尝试使用FireBreath 创建一个 npapi 插件,因为它的工作量会少很多,而且在 IE 上也能工作。如果您不喜欢这个想法,您可以查看其他 npapi 插件(包括 FireBreath)以确保您做的事情正确。将日志记录(您喜欢的任何类型)添加到主入口点并查看它在哪个点失败。

另一个技巧是转到 about:config 并找到插件 ipc 设置并禁用它们;然后您可以附加到主 firefox 进程,如果它们被调用,它应该会命中您的断点。

请参阅FireBreath Debugging Plugins 页面了解其他想法。

【讨论】:

    【解决方案3】:

    谢谢你。最后,我能够在浏览器中加载和访问我的插件的功能。以下是调查结果:- 1. 即使我的插件在资源文件中的 MIME 类型是 'application/mozilla-npruntime-scriptable-plugin'。但我需要通过'application/x-npruntime-scriptable-plugin'从javascript嵌入元素访问它。在这一步之后,调试器开始打破我插件的断点。 2. NPPluginFuncs 和 NPNetscapeFuncs 的大小检查失败,可能是因为我的 firefox 中实现的 NPAPI 版本不同。 最后我启动了,感谢大家的支持。

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      相关资源
      最近更新 更多