问题标签 [browser-plugin]

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 投票
2 回答
1006 浏览

javascript - Native Client 模块可以渲染由 C++ 代码生成的 HTML 吗?

我有一些处理输入文件并输出 HTML 和/或 SVG 的数据分析代码。它是 C++ 和 CPU 密集型的。

我想创建一个浏览器插件,这样我的代码就可以在不离开浏览器的情况下使用。Google 的 Native Client 框架和 Pepper API 听起来很有趣,但可能限制性太强了。从 Native Client 模块是否可以通过 Pepper 执行以下操作?

  1. 访问用户文件系统上的本地文件。我知道 NaCl 沙箱通常会阻止这种情况,但肯定有办法将用户选择的文件从 Javascript 层传递到 NaCL 中?

  2. 将 HTML 或 SVG 输出回浏览器。C++ 有什么方法可以修改包含文档的 DOM?

0 投票
1 回答
288 浏览

javascript - 在浏览器窗口中有效滚动管道输出

我有一个自定义浏览器插件(使用 FireBreath 构建),它将调用用户机器上的本地进程并将标准输出通过管道传回浏览器,为此我正在通过 popen() 调用运行该进程,并且当我从中读取数据时我触发一个 JSAPI 事件并将其发送回浏览器的管道。

在浏览器中,我将输出作为预先格式化的文本附加到 div 并告诉 div 滚动到底部。

浏览器插件中的代码:

HTML & Javascript/jQuery:

这种方法适用于我需要它的浏览器(这是一个有限使用的内部工具),但它令人沮丧地滞后。我的过程通常在输出窗口完成滚动前大约 30-60 秒完成。那么,我该如何提高效率呢?有没有更好的方法将此文本传送回浏览器?

0 投票
1 回答
593 浏览

c++ - 在 FireBreath 框架中使用 Win32 API CreateProcess

我正在尝试使用 Firebreath 框架开发浏览器插件。我想要实现的第一件事是使插件能够进行跟踪路由。现在我在 Windows7 上做。目前我选择使用 Win32API CreateProcess 来调用命令 shell。通过设置 dwFlags = STARTF_USESHOWWINDOW ,我可以在执行期间隐藏命令 shell 窗口。

问题: createProcess 是在一个名为 run() 的方法中实现的,我使用 JS 调用它进行测试。当我调用 plugin().run() 时,traceroute 运行良好,并且输出成功地写入了我想要的文本文件。然而,在执行过程中,浏览器变得无响应,最后插件在 traceroute 完成几秒钟后崩溃。由于我是插件开发的新手,对 c++ 了解不多,我想知道为什么会出现这个问题。仅供参考,如果我没有隐藏命令外壳窗口,插件会产生奇迹——在执行 traceroute 时浏览器会响应。

0 投票
1 回答
306 浏览

macos - 来自浏览器插件 Mac OS X 的控制台输出?

如何将日志语句放入为 Mac OS X 编写的浏览器插件中,以便在插件运行时可以看到它们?

0 投票
1 回答
1403 浏览

javascript - Firebreath JavaScript 错误:不支持:类型函数中没有 toString() 函数

我正在使用 firebreath 框架编写浏览器插件。当我将插件与 javascript 一起使用时,我收到一个奇怪的错误:

当我尝试在我的 Dropbox_pluginAPI 类上多次调用返回 JSAPIPtr 的方法时,我收到此错误。

这是代码:

我希望有人使用firebreath并可以帮助我!


我更新了firefox版本并将片段分成不同的行,但错误仍然存​​在。我做了以下事情:

永远不会调用警报!一些电话后仍然存在错误:

排队:

0 投票
2 回答
2591 浏览

web - 带有麦克风输入的 Web 应用程序

我正在开发一个 C++ 应用程序,它接受麦克风输入、处理它并播放一些音频。该处理将合并位于服务器上的数据库。为了便于创建 UI 并获得最大的可移植性,我认为用 HTML 完成前端会很好。本质上,我想在浏览器中录制音频,将该音频发送到服务器进行处理,然后从服务器接收音频,然后在浏览器中播放。

显然,如果 HTML5 支持麦克风输入会很好,但它不支持。因此,我需要创建某种插件来实现这一点。由于涉及的安全问题,NPAPI 让我感到害怕,所以我正在研究 PPAPI 和 Native Client。Native Client 还不支持麦克风输入,我相信 PPAPI 音频输入 API 将仅限于 Chrome 的开发版本。FireBreath 看起来也不支持任何麦克风功能。所以,我相信我的选择是:

  • 编写我自己的 NPAPI 插件来录制音频
  • 使用 Flash 获取麦克风输入
  • 完全放弃浏览器,只做一个原生应用程序

目标受众是幼儿和不熟悉计算机的人。我想让它尽可能便携且易于使用。有什么建议么?

0 投票
3 回答
5658 浏览

firefox - 如何“猴子测试”一个网站

我正在寻找一种猴子测试网站的方法。类似于浏览器插件的东西,您可以在其中定义时间间隔和非点击区域,然后插件将在指定的时间间隔内开始在任何地方(非点击区域或 DOM 元素除外)点击(以及可能的其他操作)。

我在网上搜索过,只找到了针对 iPhone 和 Android 的此类测试。

0 投票
1 回答
522 浏览

npapi - NPAPI 多实例冲突

我开发了一个可编写脚本的 NPAPI 插件。当我尝试在 Chrome/Firefox 中加载单个实例时,与网页(网页 A)及其 javascript 的通信没有问题。但是,一旦我使用嵌入的插件打开一个新页面(网页 B),它就想与网页 A 而不是网页 B 进行通信。我如何区分两者?

这可能是因为已经设置了入口点并且需要重置为正确的实例吗?

谢谢

0 投票
2 回答
754 浏览

javascript - NPAPI:修改插件对象的 CSS 属性

我正在为基于 WebKit 的嵌入式浏览器编写一个 NPAPI 插件。这个插件处理的对象之一是一个视频帧,我想通过它的 javascript 属性调整它的大小,width并且height.

因此,在插件的 C++ 实现中,我通过 NPAPI NP_Class函数指针(在我的例子中映射到HasProperty / GetProperty / SetProperty方法)公开了这两个属性( widthheight )。

现在,困扰我的是,当网页中的 Javascript 执行以下操作时:

它成功地进入我的 C++ 代码并执行视频大小调整(在我的嵌入式平台中,它直接进入视频驱动程序)。
但是,在那之后,浏览器通过NPN_setWindow()函数调用我,返回视频对象的原始尺寸(在本例中为 150 像素高度)。

由于这NPP_setWindow也是直接映射到视频驱动程序的,所以我只在眨眼的时候就看到了我的 250px 高度的视频。我怀疑这完全是因为浏览器只将原始的“样式”属性作为重要的属性。

所以,问题:

  • 我可以让浏览器通过 NPAPI 以某种方式更新其宽度/高度(甚至样式?)属性吗?
  • 我是否应该简单地忽略 NPP_setWindow 调用并根据对 NPN_New() 的初始调用(它为我提供对象的样式属性)和随后video.height通过 NP API 调用来唯一地执行调整大小?

我承认我更喜欢第一个版本,因为它让浏览器决定何时重绘,这样我就可以拥有一个几乎无状态的视频插件。
此外,第一个版本使网页能够更改插件 DOM 对象的 CSS 属性,这将通过 NPP_setWindow 调用自动反映。

0 投票
0 回答
262 浏览

firefox - 没有插件容器的不同结果加载插件

我正在尝试使用 VC2010-Express 的 npruntime-scriptable-plugin。

没有插件容器的 Firefox。


示例脚本插件

结果在这里:

NPN_Evaluate() 测试,document = [object HTMLDocument]

函数 bar([object Window]) 调用!


Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20120407 Firefox/11.0


带有插件容器的 Firefox


示例脚本插件

结果在这里:

函数 bar([object Window]) 调用!


Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20120407 Firefox/11.0


错过这条线

NPN_Evaluate() 测试,document = [object HTMLDocument]

这很重要,因为默认加载插件是启用插件容器的。怎么了?

2.) 插件崩溃(Firefox 关闭)使用------

modules/plugin/sdk/samples/npruntime/plugin.cpp 作者 Josh Aas Mon Nov 23 13:57:27 2009 -0500(在 Mon Nov 23 13:57:27 2009 -0500)

我将第 758 行更改为

如果版本字符串为空,Firefox 不会崩溃。这个更改/代码可以吗?