C+中的跨浏览器扩展开发+; 我开始工作在浏览器扩展上,因为扩展的本质,我需要在C++中开发它。我目前正在使用Firefox,但希望我的代码能够跨浏览器移植。首先,是否有一个库或接口(如NPAPI)可用于确保扩展的这一点?我需要担心什么 < >我不使用XPCOM,而是在C++中编写功能,这样我就可以为每个平台编译库,并可以将它与每个浏览器的扩展包捆绑在一起。对于Firefox,我使用XUL开发扩展的JS包装器,IDL文件为我生成C++接口。我能做得更好吗?我只是想确保我没有走错路

C+中的跨浏览器扩展开发+; 我开始工作在浏览器扩展上,因为扩展的本质,我需要在C++中开发它。我目前正在使用Firefox,但希望我的代码能够跨浏览器移植。首先,是否有一个库或接口(如NPAPI)可用于确保扩展的这一点?我需要担心什么 < >我不使用XPCOM,而是在C++中编写功能,这样我就可以为每个平台编译库,并可以将它与每个浏览器的扩展包捆绑在一起。对于Firefox,我使用XUL开发扩展的JS包装器,IDL文件为我生成C++接口。我能做得更好吗?我只是想确保我没有走错路,c++,browser,cross-browser,C++,Browser,Cross Browser,编辑:还请建议是否有更好的论坛来回答这类问题。我的背景:几年前,我在一个跨平台、跨浏览器的NPAPI插件上工作,该插件使用OpenGL进行图像渲染。从那时起,我就开始关注空间,但现在我不这么做了。我为Firefox编写了非插件扩展,但没有Safari或Chrome 这在很大程度上取决于您希望扩展做什么,以及希望呈现什么类型的用户界面。不同的浏览器对扩展可以做什么和不可以做什么有不同的想法 如果您只想以自定义格式显示图像或视频,NPAPI可能是您最好的选择。NPAPI基本上是本机平台API的薄包

编辑:还请建议是否有更好的论坛来回答这类问题。

我的背景:几年前,我在一个跨平台、跨浏览器的NPAPI插件上工作,该插件使用OpenGL进行图像渲染。从那时起,我就开始关注空间,但现在我不这么做了。我为Firefox编写了非插件扩展,但没有Safari或Chrome


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

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

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

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


总的来说,如果你仔细限制目标浏览器和平台,你会发现生活会变得越来越容易。具体选择哪些浏览器和平台只有您自己可以决定。

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

你可以用这个词来表达这个意思

QtBrowserPlugin解决方案使其 易于编写的浏览器插件可以 用于Mozilla FireFox、Safari、, Opera、谷歌Chrome、QtWebKit和任何 支持的其他web浏览器 “Netscape插件API”,NPAPI


QtBrowserPlugin是软件包的一部分。

所以没有一个FireBreath框架可用于编写浏览器扩展?说到FireBreath,我刚刚在开发人员的网站上看到一篇优秀的帖子。诚然,我一直对两者之间的区别感到困惑。(这是一个遗憾,因为我实际上被要求实现的是一个扩展!)