js调用本地应用程序

来源:互联网 发布:mac os虚拟机 编辑:程序博客网 时间:2024/05/22 17:07

这两天公司由于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

最终选择的方法2实现。详情见:http://blog.csdn.net/xujinming0124/article/details/46619251

0 0
原创粉丝点击