本文目录

网页中 JavaScript 打开拉起或下载指定的 APP

🌙
手机阅读
本文目录结构

点击呼起 APP 非常简单,和打电话类似(点击打电话是 a 标签的:tel:1xxxxxxx)

<a href="weixin://scanqrcode" id="open-weixin">微信</a>

如果想直接打开,修改 href 就好

window.location.href = "weixin://";

还有一些下载的,做个备份;(没有测试的)

    //生成一个url scheme,假设我们约定的scheme是myApp://type=1&id=iewo212j32这种形式的
    var baseScheme = "weixin://";
    var createScheme=function(options){
        var urlScheme=baseScheme;
        for(var item in options){
            urlScheme=urlScheme+item + '=' + encodeURIComponent(options[item]) + "&";
        }
        urlScheme = urlScheme.substring(0, urlScheme.length - 1);
        return encodeURIComponent(urlScheme);
    };

    //实际上就是新建一个iframe的生成器
    var  createIframe=(function(){
        var iframe;
        return function(){
            if(iframe){
                return iframe;
            }else{
                iframe = document.createElement('iframe');
                iframe.style.display = 'none';
                document.body.appendChild(iframe);
                return iframe;
            }
        }
    })();

    var openApp=function(){
        var localUrl=createScheme();
        //var localUrl=baseScheme;
        var openIframe=createIframe();
        if(UA.isIPhone){
            window.location.href = localUrl;
            var loadDateTime = Date.now();
            setTimeout(function () {
                var timeOutDateTime = Date.now();
                if (timeOutDateTime - loadDateTime < 1000) {
                    window.location.href = "http://www.qq.com/";
                }
            }, 1000);
        }else if(UA.isAndroid){
            if (UA.isChrome) {
                //chrome浏览器用iframe打不开得直接去打开,算一个坑
                window.location.href = localUrl;
            } else {
                //抛出你的scheme
                openIframe.src = localUrl;
            }
            setTimeout(function () {
                window.location.href = "https://www.baidu.com/";
            }, 500);
        }else{
            //主要是给winphone的用户准备的,实际都没测过,现在winphone不好找啊
            openIframe.src = localUrl;
            setTimeout(function () {
                window.location.href = "https://www.taobao.com/";
            }, 500);
        }
    };

一些参考的链接:

http://www.jianshu.com/p/94425b560ca4

http://www.openinstall.io/content.html

http://www.dcloud.io/docs/api/zh_cn/runtime.html (这个是打开默认浏览器的参考)

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了