我很好奇为Chrome,Safari和Opera等浏览器编写浏览器插件的过程。我在这里特别考虑Windows,并且更喜欢使用C ++。
是否有任何工具或教程详细说明了这一过程?
注意:我不是指扩展名或“插件”。我指的是一个插件,类似于Flash和Adobe Reader如何使用插件来处理特定的内容类型。
答案 0 :(得分:41)
正如其他人所指出的,这些浏览器的插件是使用NPAPI编写的。
注意:Firefox和Chrome都会默认大多数插件to click-to-play soon,Chrome计划为phase out NPAPI entirely。此时不鼓励新项目的NPAPI。
NPAPI入门资源:
然而,NPAPI本身相对较低,但有一些工具和框架可以帮助您:
答案 1 :(得分:5)
我调查了Georg列出的一些框架,这是我得到的:
FireBreath。我认为这几乎是最好的一个。您可以在几天内使用FireBreath创建跨平台浏览器插件。我确实找到了一些缺点:它不支持Windows上的utf-8字符。例如:如果文件名中有中文字符,则无法读取该文件的内容。我相信boost / locale可以解决这个问题。但FireBreath不包含boost / locale。是的,你可以使用外部增强,但我花了几天时间进行配置和调整,但仍无法在Windows上进行编译。作者使用cmake来组织代码和子项目。他创建了很多bat或shell脚本和cmake宏,很难理解和配置。简而言之,如果您想要FireBreath目前无法提供的东西,那么运气会很糟糕,添加新功能非常困难。
Nixysa。我不认为它正在积极发展。文档很差。根据维基页面的评论:https://code.google.com/p/nixysa/wiki/HelloWorldWalkThru我们可以知道用户根本无法获得帮助,并且无法在Windows上运行
JUCE。它不是专门用于创建浏览器插件。它不支持Linux。作者认为NPAPI将会死亡,因此他没有计划支持Linux或添加新功能。
QtBrowserPlugin。您在QT 4.5之后的文档中找不到它。换句话说,它没有被维护(并从Qt 5.0中删除)
我会在找到更多答案后更新此答案。
更新:Chrome已停止 NPAPI 支持。我认为在未来,用C ++编写插件变得越来越难,因为浏览器缺乏支持。
答案 2 :(得分:2)
基于Netscape的浏览器,Chrome,Safari和Opera等浏览器使用NPAPI插件系统,您可以在https://developer.mozilla.org/en/Plugins和http://code.google.com/chrome/extensions/npapi.html
中学习如何编写NPAPI插件答案 3 :(得分:0)
如果你知道Qt,那么他们有一些类可以更容易地实现浏览器插件