美文网首页
PC检测本地应用是否安装

PC检测本地应用是否安装

作者: 忍不住的k | 来源:发表于2019-05-24 09:06 被阅读0次

最近产品提了一个需求,项目上有一个很low的QQ客服,要求用户点击客服时能判断用户是否已经安装QQ应用,根据网上各路大神的代码总结了一下在IE和360浏览器下的靠谱方案,chrome,firefox需要插件配合目前无法有效解决

IE内核可以判断ActiveXObject对象存在时,去new window.ActiveXObject("TimwpDll.TimwpCheck"),用try catch包裹,如果没有安装QQ,会走catch
360浏览器,首先要判断是谷歌内核,然后navigator.mimeTypes属性有一个特定值"application/vnd.chromium.remoting-viewer")只在360浏览器有,检测出360浏览器之后,遍历navigator.plugins对象,取item的name属性值等于"Tencent QQ"
检测其他应用同理
下面贴出代码,由于只能检测IE 360 ,其他浏览器一律忽略返回true
         function   checkQQInstall(){
                if("ActiveXObject" in window){
                    try{//IE判断是否安装QQ

                    new window.ActiveXObject("TimwpDll.TimwpCheck");
                    console.log("QQ已安装!")
                    return true
                    }catch (e) {
                    console.warn("没有可支持的插件!");
                    return false ;
                    }
                }
                let isChrome= window.navigator.userAgent.toLowerCase().indexOf("chrome")>0;
                if(!isChrome) return true;
                // 360
                function findPlugins(){
                    var res=false;
                    var plugins = navigator.plugins;
                    for (var i = 0; i <plugins.length; i++) {
                    var plugin_name=plugins[i].name;
                    // console.log(plugin_name);
                    if (plugin_name=="Tencent QQ") {
                    // alert(plugin_name+"   已找到");
                    res=true;
                    break;
                    }
                    }
                    return res ;

                }

                function _mime(option, value) {
                    var mimeTypes = navigator.mimeTypes;
                    for (var mt in mimeTypes) {
                    if (mimeTypes[mt][option] == value) {
                    return true;       
                    }
                    }
                    return false;
                }
                var is360 = _mime("type", "application/vnd.chromium.remoting-viewer");

                if(isChrome&&is360){
                    console.log("检测到是360浏览器");
                    if( findPlugins()) {
                        console.log('QQ已安装!')
                         return true
                    }else{
                        console.warn('请安装QQ!')
                        return false
                    }
                }
                //既不是IE也不是360也返回true
                return true

            }

相关文章

网友评论

      本文标题:PC检测本地应用是否安装

      本文链接:https://www.haomeiwen.com/subject/fcewzqtx.html