1. 程式人生 > >js呼叫本地應用程式

js呼叫本地應用程式

這兩天公司由於web下載大型的檔案(超2G的MP4檔案)的時候,下載到2G左右瀏覽器就會自動斷開連線,後來沒辦法就準備些一個下載工具!從瀏覽器中啟動下載工具,並傳遞下載引數給下載工具,在工具中下載並管理資源,廢話就這麼多,轉入正題。
在網上翻閱各種資料,總結了有3種方法可以實現此功能:
1.自定義協議
類似於mailto http https 主流瀏覽器都支援只需要在登錄檔中新增相應內容即可,官方叫做 Pluggable Protocol,瀏覽器只完成啟動程式,傳遞引數工作,程式獨立執行,不能與網頁互動:
示例:
自定義協議名為DEMO,
要啟動的應用程式完整路徑為 C:\DIR\EXE.exe
Web 請求為 DEMO://AAA:a;BBB:b;CCC:c;
HKEY_CLASSES_ROOT
DEMO (Default) = “URL:DEMO Protocol”
URL Protocol = “”
DefaultIcon (Default) = “C:\DIR\EXE.exe,1”
shell
open
command (Default) = “C:\DIR\EXE.exe” “%1”
command 就是啟動程式的命令列,官方文件中講 %1 將會被替換為 協議內容 DEMO://AAA:a;BBB:b;CCC:c;並且URI編碼
但實際程式接收到的引數為 DEMO://AAA:a;BBB:b;CCC:c;/ 多出了一個字元(測試環境 Firfox21.0 chrome27.0.1453.94 IE8 360瀏覽器)
登錄檔內容還可以新增到HKEY_LOCAL_MACHINE\SOFTWARE\Classes\下,結構與HKEY_CLASSES_ROOT相同。
官方文件

http://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx
2.NPAPI 外掛
window下開發NPAPI參考文件:http://mozilla.com.cn/post/21666/
NPAPI 是重型武器,當別的方法無法到達你的目的時,才建議使用。
執行在NPAPI外掛中的程式碼擁有當前使用者的全部許可權,不能利用Google Chrome 的沙箱技術和其他安全防護技術。 在處理不可信任的輸入, 如content scripts和XMLHttpRequest 時,你必須格外小心。
鑑於使用NPAPI可能引入的風險,使用了NPAPI的擴充套件在提交給web store或者extension gallery 時要經過人工稽核。
所以從2014年1月開始,Chrome Stable版本將阻止網頁安裝NPAPI外掛,只允許白名單裡的流行外掛繼續使用: Silverlight,Unity,Google Earth,Google Talk,Facebook Video。

3.Browser Extenstion
開發基於Chrome的Extenstion參考文件:http://open.chrome.360.cn/extension_dev/overview.html
一個應用(擴充套件)其實是壓縮在一起的一組檔案,包括HTML,CSS,Javascript指令碼,圖片檔案,還有其它任何需要的檔案。 應用(擴充套件)本質上來說就是web頁面,它們可以使用所有的瀏覽器提供的API,從XMLHttpRequest到JSON到HTML5全都有。
應用(擴充套件)可以與Web頁面互動,或者通過content script或cross-origin XMLHttpRequests與伺服器互動。應用(擴充套件)還可以訪問瀏覽器提供的內部功能,例如標籤或書籤等。Browser Extenstion 如何與本地應用程式通訊流程
WebPage —> Browser Extenstion —> Native Message —> Local Appliction