網頁中調起本地程序系列——簡介篇

 由於網頁及瀏覽器的各種限制,很多事情我們通過js等編碼並不能達到我們想要的目的,我們需要調起本地執行程序來幫助我們做一些更強大的事情,這時候問題來了,
如何才能調起我們本地程序?下面列出目前可用的幾種方法及其缺陷(主要以IE和Chrome瀏覽器爲例)。
1、使用網頁控件
1.1 IE瀏覽器
1.1.1        IE中可使用ActiveX控件調用本地控件,也可通過BHO調用,當然BHO和ActiveX控件本質都是一樣的,只是在表現形式上不同,ActiveX控件和BHO都可執行系統API,因
而調用CreateProcess或者ShellExecute都可調起本地程序。
1.1.2        缺點
1.1.2.1        在vista以上系統中有了UAC管理,對進程權限進行了分級,IE8以上版本對從IE啓動的程序都是低權限的,這樣啓動的進程能做的事情還是有限,需要進行提權操作
1.1.2.2        IE8以上系統中默認會提示用戶是否使用該控件
1.2 非IE瀏覽器
1.2.1        Chromium內核及Webkit內核等非IE內核瀏覽器中,可以使用NPAPI Plugin,NPAPI Plugin也可以調用系統API調起本地程序
1.2.2        缺點
1.2.2.1        Chrome 37版本默認會攔截NPAPI Plugin(可通過配置策略暫時解決)
1.2.2.2        Chrome已宣佈將拋棄NPAPI Plugin,轉向自己的PPAPP Plugin,當然火狐、搜狗瀏覽器、360瀏覽器等還是支持的

1.3 Chrome中的PPAPI Plugin
1.3.1        Chrome計劃打造自己的NativeClient平臺已執行本地代碼,但其NaCl和PNaCl是在chrome沙箱中運行,不能執行本地API,也禁止調用本地程序,故暫不可用
1.3.2        PPAPI是用來替代NPAPI的Plugin,Chrome自帶的flash插件已換成PPAPI了(Chrome爲了拋棄NPAPI可是下了血本的哇),PPAPI類似NPAPI,也可以調用系統API調起本地程序
1.3.3        PPAPI的缺點
1.3.3.1        目前Chrome對PPAPI支持不是很好,每次使用PPAPI需帶Plugin Type參數啓動Chrome進行註冊,下次不帶參數啓動Chrome就不認了,很是蛋疼
1.3.3.2        不能使用所有系統API,只能調用Chrome允許的,很不幸啓動本地程序的API Chrome沒給發良民證,如要使用需關閉sandbox

2、使用擴展
    在Chrome中,還可以使用擴展(Extension),向Chrome傳遞消息來調起本地進程,但擴展需要在Chrome商店中讓用戶點擊後才能使用,本地安裝需切換到開發者模式手動
設置,流程較繁瑣。
    IE中沒有擴展這個概念,也無此途徑,其他瀏覽器也有類似擴展的概念,具體未詳細研究。
3、通過協議
3.1        當一個用戶點擊一個註冊了的自定義URL協議的鏈接後,瀏覽器會啓動註冊的URL協議的處理器,該方法所有瀏覽器都支持,我們通常見的從網頁中啓動QQ就是用的這種方法。

3.2        缺點
3.2.1        啓動時會有警告提示,Chrome中可通過修改的Local State的配置文件關閉提示

以上3類從網頁中啓動的本地程序就介紹完了,如果大家欲瞭解各種方法是如何實現的,請繼續關注《網頁中調起本地程序系列
發佈了27 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章