zoukankan      html  css  js  c++  java
  • 网页中调起本地程序系列——简介篇

     由于网页及浏览器的各种限制,很多事情我们通过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类从网页中启动的本地程序就介绍完了,如果大家欲了解各种方法是如何实现的,请继续关注《网页中调起本地程序系列

    本文为博主原创文章,如需转载请说明转至http://www.cnblogs.com/organic/
  • 相关阅读:
    eslint 的 env 配置是干嘛使的?
    cookie httpOnly 打勾
    如何定制 antd 的样式(theme)
    剑指 Offer 66. 构建乘积数组
    剑指 Offer 65. 不用加减乘除做加法
    剑指 Offer 62. 圆圈中最后剩下的数字
    剑指 Offer 61. 扑克牌中的顺子
    剑指 Offer 59
    剑指 Offer 58
    剑指 Offer 58
  • 原文地址:https://www.cnblogs.com/organic/p/5005661.html
Copyright © 2011-2022 走看看