我的背景:幾年前,我從事跨平臺,跨瀏覽器的NPAPI插件,使用OpenGL進行圖像渲染。從那以後,我已經注意到了這個空間,但這不是我現在所做的。我爲Firefox編寫了非插件擴展,但不是Safari或Chrome。
很大程度上取決於您希望自己的擴展所要執行的操作以及要呈現的用戶界面類型。不同的瀏覽器對擴展可能做什麼和不可以做什麼有不同的看法。
如果您只是想以自定義格式顯示圖像或視頻,NPAPI可能是您最好的選擇。 NPAPI基本上是圍繞本地平臺API的簡潔包裝。因此,跨平臺的NPAPI代碼必須處理單個平臺怪癖以及來自瀏覽器的對NPAPI的不同級別的支持。 Google有一個名爲Pepper的項目來修復一些NPAPI的問題,但Pepper除了Chrome之外還沒有任何瀏覽器的支持。
Google的Native Client項目爲運行本機代碼提供了NPAPI的替代方案,但它對本機代碼施加了限制。例如,pthreads是允許的,但網絡訪問不是。有一個名爲c_salt的NaCL子項目,它似乎是爲了解決您尋求的那種HTML/JS UI +本機代碼集成。不幸的是,它仍處於設計階段,因此對於今天編寫擴展程序並不是很有幫助。
我的理解是,目前,與瀏覽器UI集成並且與本地代碼集成的跨瀏覽器擴展是不可行的。 Safari和Chrome都比Firefox限制了擴展,並且只允許使用JavaScript編寫的擴展。我不知道是否可以在Safari或Chrome中使用擴展程序與使用NPAPI編寫的瀏覽器插件進行交互。我猜這是要麼不可能,要麼令人難以置信的痛苦。
總的來說,如果你仔細地限制哪些瀏覽器和平臺的目標,你會發現生活多了,容易得多。究竟選擇哪種瀏覽器和平臺是隻有你自己才能決定的。
正確的論壇。好問題。 – sje397 2010-09-17 00:45:40
但到目前爲止沒有迴應! – user220201 2010-09-17 02:12:44