问题标签 [firebreath]

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 回答
107 浏览

objective-c++ - 如何更改我的项目 API 类扩展

我创建了一个名为“OpenOnDesktopPlugin”的 firebreath 项目。我需要将“OpenOnDesktopPluginAPI”扩展名从.cpp 更改为.mm,因为我需要添加一些客观的c 代码。我在“.cmake”文件中添加了“Mac/[^.]*.mm”行。问题是,当我将“.mm”的扩展名更改为“OpenOnDesktopPluginAPI.cpp”并运行“prepmac”命令时,该文件未显示在我的 firebreath 项目树中,但如果我去我的 finder,文件在那里。

0 投票
1 回答
1434 浏览

linux - 将 Mozilla (FireBreath) 插件打包成 .xpi for FireFox?

可能这与在 Firefox 扩展中使用由 Firebreath 生成的插件有关?; 但是,我的问题可能更具体,所以这里......

我正在使用 Linux (Ubuntu 11.04),并且使用 FireBreath 构建了一个 Mozilla/Firefox (Firefox 7) 插件。这个平台上生成的插件是一个“ npXXX.so”文件,我在~/.mozilla/plugins. 然后,我编写了一个使用该插件的扩展程序——除了符号链接,似乎不需要其他任何东西——一切似乎都可以正常工作:)

所以,知道“ firefox 支持通过 XPI 安装你的插件。FireBreath 团队不建议这样做”,现在我仍然想将扩展和插件打包成一个 XPI 文件。所以,我正在阅读一些关于可安装包的结构 - MDN的内容,我可以看到这两种可能性:

现在,它说:“不应该使用旧的基于 XPCOM 和 LiveConnect 的插件 API。 ”,所以我猜/components应该使用“ ”目录(即使它在上面的页面中作为示例给出)。而且我在任何地方都找不到明确的说明,但我猜 FireBreath 构建了 NPAPI 插件 - 所以大概“ ”是要走的路。(也提到了“ ”,但它清楚地表明它已被 Firefox > 3.6 弃用)。/plugins/platform

 

好的,到目前为止一切顺利......所以我尝试将插件文件复制到plugins/linux扩展目录中:

...然后将以下内容插入chrome.manifest

...然后我将整个扩展目录(包括插件)压缩为 .xpi,尝试将其安装在另一台计算机上。在那里,.xpi 成功安装,.so 文件确实在配置文件的extensions/XXX/plugins/linux/目录下解压缩 - 并且扩展的每个跨平台(javascript)代码都可以正常工作;除了找不到插件。

现在,当然,用户可以自己将扩展符号链接.so~/.mozilla/plugins/; 但是,我想饶恕那个用户:)

 

我将如何处理这种包装 - 有推荐的方法吗?

非常感谢您的任何答案,
干杯!

 

编辑:发现将插件作为工具包捆绑发布 - MDN仅声明install.rdf,并且plugins/obj.so需要 a;然后我发现Running Quake Live in Firefox 4, 5 and 6 on Linux [fixes inside],指的是QuakeLivePlugin_433-modded_ff10.xpi,并且确实遵循如此简单的结构。如果我安装它,我会得到一个Quake 扩展和 Quake 插件(即使错误控制台抱怨“无法读取 chrome 清单文件 '/path/to/extensions/quakeliveplugin@idsoftware.com/chrome.manifest'。 ”)....但是如果我尝试我的 FireBreath 插件也是如此(例如,只是一个 install.rdf 和插件/plugins),只显示扩展 - 没有插件(也没有合理的错误消息)。这可能是 FireBreath 的问题吗?

0 投票
1 回答
886 浏览

c++ - 如何找到包含的类型库中的接口的接口 ID?

在我的firebreath项目中,我在我的项目中包含了所需的dll,如下所示

我需要使用dll中定义的一些接口的iid。

我如何才能找到和使用类型 iid?

我什至有 dll 的源代码和 .idl 代码。我可以从中找到我需要的信息吗?

0 投票
3 回答
306 浏览

c++ - C++ 中不同大小的不同行为(Firebreath 源代码)

当我浏览firebreath的源代码时遇到一个困惑的问题(src/ScriptingCore/Variant.h

问题是为什么大值类型(大于 void*)的静态函数的实现与小值类型不同。

例如,小值类型的 static_delete 只是在 T 实例上调用析构函数,而对于大值类型,使用 'delete'。

有什么诀窍吗?提前致谢。

0 投票
2 回答
1586 浏览

c++ - 使用 BSTR 数据类型时出错

我的 firebreath 插件项目有一个活动 X 控件的包装类。

其中一种方法将 BSTR 数据类型变量作为输入,但是当我尝试调用该方法并传递 BSTR 时,出现错误。

我什至包含了“WTypes.h”头文件。但这似乎并不能解决问题。

所以有人提出了替代方案。

Makecall函数使用这些参数调用active x控件实现的Makecall函数

错误

PS:在我搜索错误后,我发现火焰呼吸不支持宽字符,即 uni 代码。那么有没有办法在firebreath中使用unicode数据类型。

0 投票
1 回答
688 浏览

javascript - FireBreath 中的触发事件

我正在使用FireBreath插件为 activex 控件编写包装类。

在从 FireBreath 文档链接到的 FireBreath activex 包装器示例中,该项目的作者使用 FireEvent 从 activex 容器类异步触发事件。

但是 FireBreath 的文档现在在 FireEvent 方法下有一个注释,上面写着:

“注意:从 FireBreath 1.5.0 开始不推荐以这种方式触发事件”

而且在示例中,事件未使用以下格式在根 JSAPI 对象中注册:

那么这是正确的做法吗?或者是否可以使用容器类调用事件

方法?

0 投票
1 回答
233 浏览

plugins - 在插件上更改\隐藏鼠标光标

我正在为 FF/Chrome/IE/Gecko 开发一个插件。在我的插件中,我需要更改或隐藏鼠标光标。该插件是无窗口的(并且应该保持不变)。

我已经厌倦了更改包含插件的 DOM 的样式,但它不起作用,调用 SetCursor/ShowCursor 也是如此(可能是因为沙盒)。

我知道这在技术上是可行的(Adobe Flash 能够改变鼠标光标,IE YouTube Flash 播放器)

谢谢,科比

0 投票
1 回答
735 浏览

cocoa - 使用 Firebreath 框架将可可应用程序转换为 NPAPI 插件

我最近发现 Apple 在 Lion 和 Safari 最新版本中将不支持 webkit 模型,并且每个人都在迁移到 Firebreath 项目以使用 NPAPI。

我有一个基本的 Cocoa 应用程序,它与以下本机框架链接:

  1. 核心图形
  2. 核心数据
  3. IOKit
  4. PFEventTaps(这是一个 3 方框架:Pfiddlesoft.com)

我从来没有使用过插件,所以这对我来说有点新,我从 Richard bateman 编写的 MAC 教程开始,在遵循指南之后,我最终得到了我个人项目的 firebreath 项目模板。下一步我只是将我所有的 Objective-C 类放入 Source Files 文件夹,添加与 4 个框架的链接,最后我将需要在插件中公开的新公共方法添加到 MyProjectPluinApi.h 例如​​( registerMethod("MyMethod", make_method(this, &WilmerPlugInAPI::MyMethod));

当我构建 firebreath 项目时,我得到了很多编译错误,其中一个非常重复的是: NSString was not declared in this scope.错误指向 NSObjCRuntime.h

到目前为止,我无法使用 XCODE 3.2.6 成功构建此版本

这里有什么问题?我需要更改所有代码以在此模板项目中完成 CPP 样式吗?或者我可以以某种方式链接我的框架?我可以看到一些样本吗?

更多细节:2011 年 11 月 7 日:我试图用一个简单的项目进行测试:

  • 首先我创建项目 testOfFB
    • 它在 /users/Me/Firebreath-dev/build/projects/testofFB 中生成
  • 然后我修改类 testFBApi.cpp 并将其重命名为 testFBApi.mm。
  • 我编写了一个名为 testMath.m 的 Objective-c 类并将其重命名为 testMath.mm
  • 我添加了一个带有签名的方法 Add:

    /li>
  • 最后我用这个修改文件 testFBApi.mm:

    /li>
  • 在 add 方法的实现中,我创建了一个objective-c 类方法“add”的实例来测试对我的objective-c 方法的调用。我做了包含,并以这种方式更改了文件 /Mac/projectDef.cmake:

    /li>

我运行了 prepmac.sh 脚本,然后构建了 xcode 解决方案,并且出现了相同的错误,而且还没有声明一些其他错误,例如 testFBApi。

0 投票
1 回答
471 浏览

xcode - 在 Firebreath 项目中使用 wxWidgets

我在 xcode 的 FireBreath 插件项目中使用 wxWidgets。

已添加

  1. C++ 标志(-I/usr/lib/wx/include/mac-unicode-debug-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXDEBUG__ -D__WXMAC__

  2. 项目设置中的其他链接器标志(-framework IOKit -framework Carbon -framework Cocoa -framework System -framework QuickTime -framework OpenGL -framework AGL -lwx_macud-2.8)。

但我收到以下错误,...

并构建失败。

有人可以告诉我我失踪了吗?

提前致谢..

0 投票
2 回答
3494 浏览

javascript - 在 NPObject 上调用方法时出错!在 JavaScript 中

我有一些想要使用 PortAudio 打开流的 Visual C++ 代码(FireBreath)。完成所有初始操作后,我有以下代码:

这个函数是从 JavaScript 调用的,在一定的秒数后,插件崩溃了Error calling method on NPObject!,在 JavaScript 中调用它的那一行给我一个错误。