2009-12-18 37 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

相關問題