我想制作浏览器插件/扩展,我需要学习哪种编程语言?

Imr*_*ran 4 javascript browser internet-explorer firefox-addon

我需要学习哪些编程语言才能为所有浏览器制作浏览器插件/扩展?

我被告知它的Javascript?先感谢您.

Phi*_*oth 6

实际上我有点不同意其他答案,因为根据我的经验,在为Mozilla或IE编写扩展时,选择编程语言本身并不是一个约束.

IE使用COM,因此您可以像使用.NET语言一样使用C或C++.

同样,Mozilla使用XPCOM,因此您实际需要的是XPCOM绑定而不是任何特定语言.

我在C++中为这两种浏览器编写了扩展.我没有为其他浏览器编写扩展的经验.


i_a*_*orf 5

关于IE,我曾经说过这些话:

IE本身是用C++编写的,并广泛使用COM.可扩展性模型也是基于COM的.根据我的经验,您有以下权衡可供选择:

  1. 纯C++和COM.您可以从头开始构建所有内容,包括类工厂,COM对象注册,接口实现等.您需要花费额外的一天时间来实现IUnknown,IClassFactory,IObjectWithSite等,您可以轻松搞清楚IConnectionPoint和IConnectionPointContainer的工作方式.但是,现在你知道一切是如何工作的,你的项目随着它的发展变得更容易调试和维护,你就会成长为一个人.如果你这样做,我保证会给你有用的答案.
  2. 使用ATL/MFC并用C++编写.您可以更快地开始使用,因为所有的COM粘合剂和基本接口都是为您实现的.不好的一面是你把你的头发拉出调试模板文件,在你出错的时候你没有写的头文件.您遇到无法解释的崩溃.
  3. 您使用C#编写它并具有各种GAC,运行时版本和其他问题.只有运行时的v4才能并排托管不同的版本.你得到的论坛帮助较少,因为IE扩展真的应该是原生的而不是托管的.你可以写一堆互操作(或者至少是pinvoke.net没有的东西)并且在出错时调试好运.此外,IE将所有托管扩展视为mscorewhatever,而不是YourExtension.dll,因此用户经常在manage/add-ons UI中感到困惑.并且Microsoft明确表示不要编写托管的Shell扩展,因此您必须确保只有iexplore.exe加载您的扩展,而不是explorer.exe.如果您希望它在其他平台上运行,那么移植它会遇到很多麻烦.

这些只是,就像我的意见一样,所以请随意获得第二个.

就Firefox而言,你可以在不使用XPCOM的情况下编写大量扩展.他们的核心可扩展性模型是XUL + JavaScript,它是所有标记和脚本.99%的扩展都可以通过这种方式实现.但是,有一些你在他们的框架中无法做到的事情,例如Cooliris,所以你必须求助于XPCOM来调用本机代码(或NPAPI).

Chrome扩展程序也是Javascript和标记,但是如果您想为Chrome执行任何类型的原生内容编写插件,则必须使用NPAPI,这是一个C API.

因此,总而言之,您可以使用Javascript,XML和HTML覆盖很多方面,但是您会错过IE并且您可以做的事情受到限制.如果你想要一路走来,你需要学习C++(并理解NPAPI的C++和C之间的细微差别).我不建议乱用基于C#的浏览器插件,尽管有很多关于如何在C#中为IE编写工具栏的例子.