我开始研究浏览器扩展,由于扩展的性质,我需要在C++中开发它。我目前正在使用Firefox,但是我希望我的代码可以跨浏览器移植。首先,我是否可以使用一个库或接口(如NPAPI)来确保扩展?我需要担心的是什么?
我不使用XPCOM,而是用C++编写功能,这样我就可以编译每个平台的库,并将其与每个浏览器的扩展捆绑在一起。对于Firefox,我使用XUL来为我的扩展开发JS包装器,一个IDL文件为我生成c++接口。我能做点更好的事吗?我只想确保我不会走错路。
编辑:也请建议是否有一个更好的论坛,这类问题。
发布于 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编写的浏览器插件交互。我猜这要么是不可能的要么是难以置信的痛苦。
总之,如果您仔细限制要针对哪些浏览器和平台,您会发现生活要简单得多。确切地说,选择哪种浏览器和平台是由您自己决定的。
发布于 2011-03-16 23:41:11
不是很多人知道它,但是是的,您可以使用Qt编写跨浏览器插件。:-)
您可以只为此使用QtBrowserPlugin。
QtBrowserPlugin解决方案便于编写浏览器插件,可以在Mozilla FireFox、Safari、Opera、Google、QtWebKit和任何其他支持"Netscape插件API“的web浏览器中使用。
QtBrowserPlugin是Qt解决方案包的一部分。
https://stackoverflow.com/questions/3731872
复制相似问题