2009-12-18 132 views

回答

5

我曾经说过沿着关于IE下面几行内容:

IE本身是用C++编写,并大量使用COM的。可扩展性模型也是基于COM的。根据我的经验,你有以下的取舍选择之中:

  1. 纯C++和COM。你可以从头开始构建所有的东西,包括类工厂,COM对象注册,接口实现等等。你花了一天或者更多的时间来实现IUnknown,IClassFactory,IObjectWithSite等,并且你很难弄清楚IConnectionPoint和IConnectionPointContainer是如何工作的。然而,现在你知道一切都是如何工作的,而且随着它的发展,你的项目更容易调试和维护,并且你成长为一个人。如果你这样做,我保证会给你有用的答案。
  2. 使用ATL/MFC并用C++编写。由于所有的COM胶和基本接口都是为您实施的,因此您的入门速度会更快。不好的一面是你在头部文件中调试模板化的goo,当事情出错时你没有写出头文件。您遇到无法解释的崩溃。
  3. 您用C#编写它,并且拥有各种GAC,运行时版本和其他问题。只有在运行时的v4版本中,您才可以并排托管不同的版本。由于IE扩展真的应该是本地的而不是托管的,所以你从论坛中获得的帮助减少了。你可以编写一堆互操作(或者至少pinvoke.net还没有的),并且在出现错误时调试好运。此外,IE会将所有托管扩展视为mscorewhatever,而不是YourExtension.dll,因此用户经常会在管理/附加组件用户界面中感到困惑。而且微软明确表示不要编写托管的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浏览器。

1

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

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

+0

大多数IE扩展都是使用本机COM接口以C或C++编写的。这个最近一直在改变,但它仍然不是一个推荐的方法。 – 2009-12-18 02:09:51

1

对于所有浏览器都没有单一的答案,但对于像FireFox这样的Mozilla浏览器,你主要是在谈论JavaScript。对于IE来说,它自然会是.NET语言。对于其他浏览器,它将取决于,但通常一些JavaScript可能带有一点浏览器编程语言。

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

+0

不,管理语言不推荐用于IE扩展开发。 – 2009-12-18 02:09:10

6

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

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

同样,Mozilla使用XPCOM,让你真正需要的是一个XPCOM binding而不是任何特定的语言。

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

+0

投票你,因为你的答案是最准确的。我认为,我们其余的回答多为常见的情况是为了什么最参考资源是可用的。 – phoebus 2009-12-18 01:10:42

+0

我的经验主要是C#和一些C++的拼贴。我想创建的加载项的IE浏览器,然后Firefox浏览器。请给我提示如何开始 – mustafabar 2010-08-01 08:21:17