之前在一個B/S項目中遇到一個需求,就是客戶需要在頁面上對報表的布局以及顯示內容,進行自定義。最后決定使用activex技術來實現。眾所周知,activex是微軟搞得,因此只有ie內核的瀏覽器才能支持。像firefox(火狐)、Chrome、Apple Safari等非ie內核瀏覽器都不支持activex控件,這樣就大大加大了系統使用的局限性。
因此考慮是不是可以讓非ie內核瀏覽器也能支持activex控件,目前火狐等瀏覽器也有類似於activex控件的技術,那就是插件。所以最終決定以插件來作為連接activex的紐帶,使非ie內核瀏覽器也可以支持activex控件。
確定了開發內容后,接下來就是上網了解相關方面的知識和技術。了解了NPAPI技術
NPAPI全稱為:Netscape Plugin Application Programming Interface (NPAPI).
NPAPI 是一個很經典的插件方案,用dll進行注入,用協定的API進行通信,用字符串描述插件能力。瀏覽器會根據能力描述,動態加載插件,並負責插件調用的流程和生命周期管理。而插件中,負責真實邏輯的處理,並可以構造UI與用戶交流。以此類方式實現的插件系統。
在firefox提供SDK的下載(https://developer.mozilla.org/en-US/docs/Gecko_SDK)
插件整體的實現思路就是通過插件調用OCX控件,也就是插件本身是銜接瀏覽器與OCX的一條橋梁,這樣做就可以簡單的實現非ie內核瀏覽器對OCX控件的支持。
經過一個多禮拜的開發,插件功能已經基本實現。並且為了方便使用已經打包成exe安裝包。在項目中可以直接讓用戶下載安裝。
安裝效果圖:

- <HTML>
- <H1> 測試頁面 </H1><p>
- 測試頁面
- <HR><center><P>
- <br>
- <object
- id="Webplugin" //ocxid
- TYPE="application/xhanhan-activex"
- BORDER="0"
- WIDTH="300"
- HEIGHT="300"
- clsid="{A2DC9F0E-1A2D-4C6D-BB2E-053BABE17134}"> //ocx插件id
- </object>
- </HTML>
