IE(微軟)瀏覽器擴展開發初探
最近開發瀏覽器插件有點上癮,先開發了一個FF(火狐)瀏覽器插件,後來又開發了一個穀歌瀏覽器的插件,還是不覺得不過癮,這次要嚐試開發一個粗糙的IE瀏覽器插件,最終實現在一鍵實現訂餐,一鍵取消訂餐操作。
凡事知道就好做了,隻是這次走了些彎路。網上隻要提到IE插件開發的無不提到Com,BHO等等概念,為此我還下載了vs2010,安裝platform sdk,並到codeproject下載N個例子進行研究,雖然已經好幾年不用vs2010了,也不曾在寫com了,還好有點底子,基本能看懂,了解了下BHO的原理,同時了解了com的一些東西,也算有些收獲。不過越看越覺得我的不需要這麼麻煩,不需要BHO處理各種消息狀態。我隻需要在IE上增加一個按鈕,點擊這個按鈕,調用我寫的js觸發一個操作,並給出提示即可。走點彎路沒關係,下次也許用的到。
現在改變策略,既然要增加按鈕,觸發操作。那到internet explorer development上找幫助就可以了,還真找到一篇文章,關於如何add menu items。仔細閱讀了解到,IE上的按鈕是通過增加注冊表項來完成了,隨即生成了兩個注冊表項
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InternetExplorer\Extensions\{5D78A592-AA1A-4E6F-A808-9214B4A7222A}] "CLSID"="{5D78A592-AA1A-4E6F-A808-9214B4A7222A}" "MenuText"="我要訂餐" "MenuCustomize"="我要訂餐" "MenuStatusBar"="我要訂餐" "ClsidExtension"="" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InternetExplorer\Extensions\{BA6C7C63-9EFC-4DA1-B5D9-666A624F4831}] "CLSID"="{5D78A592-AA1A-4E6F-A808-9214B4A7222A}" "MenuText"="取消訂餐" "MenuCustomize"="取消訂餐" "MenuStatusBar"="取消訂餐" "ClsidExtension"=""導入注冊表項,重啟IE,在工具中看到這兩個選項,我要訂飯和取消訂飯。隻是點擊這兩個menu item沒有任何響應,原因是我們沒有給這兩個menu item增加增加響應事件。很簡單在注冊表項中增加一個exec即可,我們要使用之前的js,那就需要寫一個頁麵來執行這個js,比如寫如下代碼
<html> <head> <metahttp-equiv="Content-Type" content="text/html;charset=utf-8"> <title>訂餐係統</title> <meta name="keywords"content=""> <scriptsrc="./dingcan.js"></script> </head> <body> <span >正在訂餐中...</span> </body>
如果我們的exec這樣寫
"Exec"="file:///D:/Program%20Files/dingcan/dingcan.html"IE會重新打開一個窗口,用戶體驗不好,這裏我們用點小技巧,把.html修改成.hta後綴,整個事件清淨了,這樣設置之後,點擊按鈕後,是這個樣子的有點大,

在html增加如下代碼,設置窗口大小,
<scriptlanguage="javascript"> window.resizeTo(200,100) </script>這次是這樣的,完美了

Hta內容補充:HTA 全名為 HTMLApplication ( HTML 全名為 Hyper Text Markup Language ),HTA 為 HTML 應用程序。HTA格式的文件不需要在瀏覽器中執行,windows可以直接執行此程序。更詳細的內容可以參考HTML Applications: https://msdn.microsoft.com/en-us/library/ms536471%28v=VS.85%29.aspx
IE插件實現的很猥瑣,隻不過他實現了我要的功能。這幾個擴展都是皮毛,沒有什麼高深技術含量,隻是希望對大家有所幫助,也希望消除做瀏覽器擴展的不自信。
參考資料
Add menu items https://msdn.microsoft.com/en-us/library/aa753591(v=VS.85).aspx
Internet Explorer Development https://msdn.microsoft.com/en-us/library/bb188743.aspx
最後更新:2017-04-02 06:51:55
上一篇:
Python虛擬機的初始化概覽
下一篇:
android之定時器AlarmManager .
能源利用率逼近理論極限 阿裏巴巴展示液冷黑科技
並發已不再是語言層麵上的事情了
談未來零售場景的物聯網技術發展
JVM實用參數(二)參數分類和即時(JIT)編譯器診斷
OLE DB provider "SQLNCLI11" for linked server "dbLink01" was unable to begin a distributed t
【雲棲大會】全國社會保險大數據應用創新大賽結果揭曉,互聯網+人社產生新火花
Java 設計模式 接口型模式 之 類型介紹 (一)
MongoDB代碼中的StringBuilder類
關乎性能的思考
【最佳實踐】如何使用雲監控+日誌服務快速完成故障發現和故障定位