如何编写浏览器插件?

时间:2010-04-15 21:19:47

标签: c++ npapi browser-plugin

我很好奇为Chrome,Safari和Opera等浏览器编写浏览器插件的过程。我在这里特别考虑Windows,并且更喜欢使用C ++。

是否有任何工具或教程详细说明了这一过程?

  

注意:我不是指扩展名或“插件”。我指的是一个插件,类似于Flash和Adobe Reader如何使用插件来处理特定的内容类型。

4 个答案:

答案 0 :(得分:41)

正如其他人所指出的,这些浏览器的插件是使用NPAPI编写的。

注意:Firefox和Chrome都会默认大多数插件to click-to-play soon,Chrome计划为phase out NPAPI entirely。此时不鼓励新项目的NPAPI。

NPAPI入门资源:

然而,NPAPI本身相对较低,但有一些工具和框架可以帮助您:

  • FireBreath - 跨浏览器,跨平台的插件框架工作
  • Nixysa - 为NPAPI插件生成胶水代码
  • JUCE - 也为插件提供支持的应用程序框架
  • QtBrowserPlugin - 基于Qt的浏览器插件框架

答案 1 :(得分:5)

我调查了Georg列出的一些框架,这是我得到的:

  1. FireBreath。我认为这几乎是最好的一个。您可以在几天内使用FireBreath创建跨平台浏览器插件。我确实找到了一些缺点:它不支持Windows上的utf-8字符。例如:如果文件名中有中文字符,则无法读取该文件的内容。我相信boost / locale可以解决这个问题。但FireBreath不包含boost / locale。是的,你可以使用外部增强,但我花了几天时间进行配置和调整,但仍无法在Windows上进行编译。作者使用cmake来组织代码和子项目。他创建了很多bat或shell脚本和cmake宏,很难理解和配置。简而言之,如果您想要FireBreath目前无法提供的东西,那么运气会很糟糕,添加新功能非常困难。

  2. Nixysa。我不认为它正在积极发展。文档很差。根据维基页面的评论:https://code.google.com/p/nixysa/wiki/HelloWorldWalkThru我们可以知道用户根本无法获得帮助,并且无法在Windows上运行

  3. JUCE。它不是专门用于创建浏览器插件。它不支持Linux。作者认为NPAPI将会死亡,因此他没有计划支持Linux或添加新功能。

  4. QtBrowserPlugin。您在QT 4.5之后的文档中找不到它。换句话说,它没有被维护(并从Qt 5.0中删除)

  5. 我会在找到更多答案后更新此答案。

    更新:Chrome已停止 NPAPI 支持。我认为在未来,用C ++编写插件变得越来越难,因为浏览器缺乏支持。

答案 2 :(得分:2)

基于Netscape的浏览器,Chrome,Safari和Opera等浏览器使用NPAPI插件系统,您可以在https://developer.mozilla.org/en/Pluginshttp://code.google.com/chrome/extensions/npapi.html

中学习如何编写NPAPI插件

答案 3 :(得分:0)

如果你知道Qt,那么他们有一些类可以更容易地实现浏览器插件