use*_*201 14 c++ browser cross-browser
我开始研究浏览器扩展,由于扩展的性质,我需要用C++开发它.我目前正在使用Firefox,但希望我的代码可以跨浏览器移植.首先是有一个库或一个接口(如NPAPI),我可以使用它来确保这个扩展?我需要担心的是什么?
我没有使用XPCOM,而是在C++中编写功能,以便我可以为每个平台编译库,并可以将其与每个浏览器的扩展捆绑在一起.对于Firefox,我使用XUL为我的扩展开发JS包装器,IDL文件为我生成c ++接口.我能做得更好吗?我只想确保自己不会走错路.
编辑:还请建议是否有更好的论坛来解决此类问题.
我的背景:几年前,我开发了一个跨平台、跨浏览器的 NPAPI 插件,该插件使用 OpenGL 进行图像渲染。从那时起我就开始关注这个空间,但这不是我现在所做的。我为 Firefox 编写了非插件扩展,但没有为 Safari 或 Chrome 编写过。
很大程度上取决于您希望扩展程序执行什么操作,以及您想要呈现哪种类型的用户界面。不同的浏览器对于扩展可以做什么和不可以做什么有不同的想法。
如果您只想以自定义格式显示图像或视频,NPAPI 可能是您的最佳选择。NPAPI 本质上是本机平台 API 的薄包装器。因此,跨平台 NPAPI 代码必须处理各个平台的怪癖,以及浏览器对 NPAPI 的不同级别的支持。Google 有一个名为 Pepper 的项目来解决 NPAPI 的一些问题,但除了 Chrome 之外,Pepper 还没有得到任何浏览器的支持。
Google 的 Native Client 项目提供了 NPAPI 的替代方案来运行本机代码,但它对本机代码施加了限制。例如,允许 pthreads,但不允许网络访问。有一个名为c_salt的 NaCL 子项目,它似乎可以解决您寻求的 HTML/JS UI + 本机代码集成的问题。不幸的是它仍处于设计阶段,因此对于今天编写扩展并没有多大帮助。
我的理解是,就目前而言,与浏览器 UI 集成并与本机代码集成的跨浏览器扩展是不可行的。Safari 和 Chrome 对扩展的限制都比 Firefox 更多,并且只允许用 JavaScript 编写的扩展。我不知道 Safari 或 Chrome 中的扩展是否可以与用 NPAPI 编写的浏览器插件交互。我猜这要么是不可能的,要么是极其痛苦的。
总的来说,如果您仔细限制目标浏览器和平台,您会发现生活变得更加轻松。到底选择哪些浏览器和平台只有您可以决定。
归档时间: |
|
查看次数: |
3573 次 |
最近记录: |