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

时间:2009-12-18 00:10:01

标签: javascript internet-explorer firefox-addon browser

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

我被告知它的Javascript?提前谢谢。

4 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分: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。如果你想让它在其他平台上运行,那么移植它会有很多麻烦。
  4. 这些只是,就像我的意见一样,所以请随意获得第二个。

    就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编写工具栏的例子。

答案 2 :(得分:1)

对于基于Mozilla的浏览器,您需要主要查看Javascript(以及列出的其他技术here)。

对于Internet Explorer,任何.NET语言通常都是用于创建IE浏览器插件的语言。

答案 3 :(得分:1)

所有浏览器都没有一个答案,但对于像FireFox这样的Mozilla浏览器,您主要是在谈论JavaScript。对于IE,自然而然,它将成为.NET语言。对于其他浏览器,它将取决于,但通常是一些JavaScript,可能只是浏览器编程的一种语言。

对于Mozilla浏览器,Mozilla开发中心的Extensions部分是一个很好的起点。