閱讀771 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go Python虛擬機的初始化概覽
  下一篇:go android之定時器AlarmManager .