问题标签 [npapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4156 浏览

javascript - 从浏览器插件 (NPAPI) 生成异步 Javascript 事件

我正在编写一个网络浏览器插件(NPAPI。)

我的插件启动了一个工作线程,随着工作的进展,我想将事件传递回 Javascript。但是由于NPAPI线程模型,工作线程直接回调NPAPI是不合法的,所以工作线程不能调用Javascript。

一种解决方案是 NPN_PluginThreadAsyncCall 函数。但这是一个相对较新的功能。例如,它仅从 Firefox 3 开始受支持。

有没有办法在不使用 NPN_PluginThreadAsyncCall 的情况下从 NPAPI 插件获取异步事件传递/javascript 执行?在添加此功能之前人们做了什么?

0 投票
2 回答
2211 浏览

firefox - 何时在 npapi 插件中释放对象

我对 npapi 中的引用计数感到困惑。大多数情况下,我不知道哪种方法会增加引用计数。谁能详细解释一下?为方便起见,我在这里列出了最常用的 NPN_* 函数以及我自己的理解:

NPN_CreateObject:将引用计数设置为 0

NPN_RetainObject:增加引用计数

NPN_ReleaseObject:十进制引用计数

NPN_Evaluate: ?? (如果返回一个 NPObject*)

NPN_GetValue: ?? (如果返回一个 NPObject*)

NPN_SetValue: ?? (如果设置为 NPObject*)

NPN_GetProperty: ?? (如果返回一个 NPObject*)

NPN_SetProperty: ?? (如果设置为 NPObject*)

NPN_RemoveProperty: ??

NPN_Enumerate: ??

NPN_Construct: ??

另一件事:npapi 是做嵌套发布吗?(如果 NPObject* 具有 NPObject* 的属性,释放父级将减少子级的引用计数)。

谢谢。

0 投票
2 回答
856 浏览

macos - WebKitPluginHost 在 OS X 10.6 上静默退出我的 32 位插件

我有一个作为通用 32 位包构建的自定义 OS X NPAPI 插件。它在 Firefox 的 OS x 10.6 下运行良好。它在以 32 位模式启动的 Safari 中也运行良好。

但是,它在以 64 位模式启动的 Safari 中静默失败。64 位 Safari 在单独的进程 (WebKitPluginHost) 中运行 32 位插件。插件日志显示主机启动插件,调用NP_Initialize,然后调用NP_GetEntryPoints,再调用NPP_New,成功返回创建的实例。通常,下一个调用的插件方法是 NPP_SetWindow,但是主机从不调用它。相反,它在启动后大约 10 秒内静默退出,没有任何消息或其他任何内容。我设法使用 GDB 附加到主机进程,但没有运气,它只是注意到该进程已正常完成。

我非常感谢任何提示我可能在插件中做错了什么,或者开源 NPAPI 插件的 URL,该插件已知在 WebKitPluginHost 下工作,甚至提示什么是调试此问题的最佳方法(构建调试WebKit 版本是最后的手段,我去过那里,现在我需要更快地找到解决方案)

0 投票
2 回答
4434 浏览

google-chrome - NPAPI 插件在 Google Chrome 中不起作用

我使用旧的 Mozilla NPRuntime 示例作为基础编写了一个小型 NPAPI 插件。我的问题是它在 Firefox 和 Safari(在 Windows 上)上运行良好,但无法在 Google Chrome 上运行。

我可以在 about:plugins 中看到插件很好,当我打开测试页面时,我看到 Chrome 启动了一个运行插件的新进程,插件进程在大约 10 秒内终止,没有任何错误对话框。在 10 秒内,进程处于活动状态,访问可编写脚本的插件对象不起作用(在使用 Firefox 或 Safari 时工作正常)。

任何想法可能导致 Chrome 在 10 秒后终止插件进程?必须与初始化相关,因为即使我不以任何方式访问插件,它也会杀死它。

0 投票
1 回答
467 浏览

safari - 在 Mac OS X v10.6 上开发进程外浏览器插件——对平台 API 的限制?

我目前正在为 MacOSX 10.6 开发一个浏览器插件,并计划使用 netscape API 来实现跨浏览器和架构的可移植性。根据Apple 的文档,从 10.6 开始,此类插件会在进程外运行以提高浏览器会话的完整性。我担心的是他们在文档中给出的以下指令:

谨慎使用平台 API。只要有可能,您应该使用新的插件 API 来完成您需要的工作。如果不存在此类 API,请提交请求它们的错误。

我不确定这个指令的性质是什么。这个建议是为了提高插件的可移植性,是提醒访问操作系统的其他 API 可能会导致客户端崩溃或损坏用户数据,还是表明对平台 API 的访问在某种程度上“被破坏了? "

0 投票
3 回答
3087 浏览

c++ - QtWebKit 中的 NPAPI 插件

我知道它可以将 NPAPI 插件与 QtWebKit 集成,因为它自 Qt 4.5 发布以来就受到支持。

我的问题是,我是否应该根据 Mozilla/Gecko 文档来设计我的插件——除了一些名为“Programming Netscape Plug-ins”的非常古老的书之外,这可能是 NPAPI 唯一可用/可靠的文档——或者 Qt 是否处理 NPAPI 插件以不同的方式?

0 投票
1 回答
277 浏览

c++ - 非绘图 Mozilla 插件

我有一些实现一些逻辑的dll。我想创建可以从 Mozilla Firefox 浏览器中的 HTML 页面的 JavaScript 访问的包装器。我找到了 npruntime 框架,但它似乎只支持窗口控制,我不需要 GUI。我正在寻找类似在 Internet Explorer 中实现的 ActiveXObject 的机制。

0 投票
2 回答
553 浏览

firefox - Firefox 3.6 插件在 Mac 上失败?

我刚刚将我的 mac 升级到 Firefox 3.6,现在我的 TIFF 查看插件都不起作用。

在 3.5 中,如果我打开了 Quicktime,那么我会得到 tiff,通过 quicktime 查看。如果我禁用了 Quicktime,但启用了我自己的插件 AcellViewTIFF,那么我将让 ViewTIFF 查看 TIFF。因为我是 ViewTIFF 的作者,所以我大部分时间都是这样。

升级到 3.6 后,如果启用 ViewTIFF,我只会得到一个空格。如果 ViewTIFF 被禁用,无论是否启用 Quicktime,它都会直接进行预览。

有人见过这个吗?

(这是编程相关的,因为我正在编写 AccelViewTIFF,如果插件的框架发生了变化,我需要修复它......)

编辑添加:

这是一个 NPAPI 插件,我已经删除或注释掉了 main,所以我不认为这是一个 CFM 插件问题。

我查看了 Mozilla 的“basicplugin”(位于标准 mozilla 源代码下的 mozilla-1-9-1-f15a2686e9a6/modules/plugin/sdk/samples/basic/mac 中),它可以工作。我将我的所有函数与 BasicPlugin 中的函数进行了比较,它唯一没有的函数是 drawPlugin 函数,它似乎可以完成实际工作。所有等效函数具有相同的接口。

当我删除或禁用 AccelViewTIFF 时,Firefox 会下载图像并将其提供给预览。当我启用它时,它什么也不做。这告诉我 Firefox 看到我有一个插件,但由于某种原因它没有运行它。

Firefox 的错误控制台或我能看到的任何控制台日志中都没有错误...

有任何想法吗?

0 投票
2 回答
940 浏览

macos - 将浏览器插件变成 XPI

我有一个非常古老的(1992 年)浏览器插件,适用于 Mac,可在几种不同的浏览器中运行。但是,由于 Firefox 将其插件限制为 Firefox 3.6 中的 XPI 文件,因此该插件不再有效。

我还没有找到一个有用的文档来描述我需要对我的插件做些什么以使其成为 XPI,或者至少可以由 Firefox 加载,任何人都可以指出这样的文档吗?或者只是向我解释我需要做什么?我正在使用 Xcode。

0 投票
2 回答
909 浏览

scripting - NPAPI 插件注入脚本

我正在开发一个 npapi 插件。我正在尝试将脚本注入浏览器的当前网页,但无法做到。关于我应该如何进行的任何提示或建议都会非常有帮助。

谢谢