首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C++中的跨浏览器扩展开发

C++中的跨浏览器扩展开发
EN

Stack Overflow用户
提问于 2010-09-16 16:22:34
回答 2查看 3.9K关注 0票数 14

我开始研究浏览器扩展,由于扩展的性质,我需要在C++中开发它。我目前正在使用Firefox,但是我希望我的代码可以跨浏览器移植。首先,我是否可以使用一个库或接口(如NPAPI)来确保扩展?我需要担心的是什么?

我不使用XPCOM,而是用C++编写功能,这样我就可以编译每个平台的库,并将其与每个浏览器的扩展捆绑在一起。对于Firefox,我使用XUL来为我的扩展开发JS包装器,一个IDL文件为我生成c++接口。我能做点更好的事吗?我只想确保我不会走错路。

编辑:也请建议是否有一个更好的论坛,这类问题。

EN

回答 2

Stack Overflow用户

发布于 2010-09-25 20:03:59

我的背景:几年前,我在一个跨平台、跨浏览器的NPAPI插件上工作,该插件使用OpenGL进行图像绘制。从那以后,我一直在关注这个空间,但这不是我现在所做的。我为Firefox编写了非插件扩展,但没有为Safari或Chrome编写。

这在很大程度上取决于您希望扩展做什么,以及您希望呈现什么样的用户界面。不同的浏览器对于扩展可能做什么和不做什么有不同的想法。

如果您只想以自定义格式显示图像或视频,那么NPAPI可能是您的最佳选择。NPAPI基本上是本机平台API的薄包装器。因此,跨平台的NPAPI代码必须处理不同的平台怪癖,以及浏览器对NPAPI的不同级别的支持。Google有一个名为Pepper的项目来解决NPAPI的一些问题,但是除了Chrome之外,Pepper还没有任何浏览器的支持。

Google的本地客户端项目为运行本机代码提供了NPAPI的替代方案,但它对本机代码施加了限制。例如,线程是允许的,但网络访问是不允许的。有一个名为NaCL的子项目,它似乎解决了您所寻求的那种HTML/JS +本机代码集成。不幸的是,它仍然处于设计阶段,因此对于今天编写扩展并没有多大帮助。

我的理解是,目前,与浏览器UI集成并与本机代码集成的跨浏览器扩展是不可行的。Safari和Chrome都比Firefox更严格地限制扩展,并且只允许用JavaScript编写扩展。我不知道是否可以在Safari或Chrome中扩展与用NPAPI编写的浏览器插件交互。我猜这要么是不可能的要么是难以置信的痛苦。

总之,如果您仔细限制要针对哪些浏览器和平台,您会发现生活要简单得多。确切地说,选择哪种浏览器和平台是由您自己决定的。

票数 4
EN

Stack Overflow用户

发布于 2011-03-16 23:41:11

不是很多人知道它,但是是的,您可以使用Qt编写跨浏览器插件。:-)

您可以只为此使用QtBrowserPlugin

QtBrowserPlugin解决方案便于编写浏览器插件,可以在Mozilla FireFox、Safari、Opera、Google、QtWebKit和任何其他支持"Netscape插件API“的web浏览器中使用。

QtBrowserPlugin是Qt解决方案包的一部分。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3731872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文