uniapp开发小程序跳转兼容普通页面、tabBar页面、重定向页面、webview页面

首先,小程序的跳转的跳转分为三类:分别是

  • uni.navigateTo
    保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。
  • uni.switchTab
    跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
  • uni.redirectTo
    关闭当前页面,跳转到应用内的某个页面。
这些我想开发过小程序的都不陌生,但是我这里进行了一层封装,一个方法可以兼容以上三种形式的跳转
// 是否是h5链接
    isH5Link(value) {
        const urlReg = /(http|https):\/\/([\w.]+\/?)\S*/;
        return urlReg.test(value);
    },
    // 是否是小程序内页面链接
    isMiniPageLink(value) {
        if (value.substr(0, 4) === 'page' || value.substr(0, 5) === '/page') {
            return true;
        }
        return false;
    },
    // 页面跳转,支持小程序内页面和h5链接  linkType: ordinary: uni.navigateTo 其他为uni.redirectTo
    pageJump(linkUrl, linkType = 'ordinary') {
        if (!linkUrl) {
            return ;
        }
        // 调用本页面的其他方法
        if (utils.isH5Link(linkUrl)) {
            if (linkType === 'ordinary') {
                uni.navigateTo({ // 在本js内可以直接调用uni.navigateTo
                    url: '../webView/webView?froms='+ encodeURIComponent(linkUrl)
                });
            } else {
                uni.redirectTo({
                    url: '../webView/webView?froms='+ encodeURIComponent(linkUrl)
                });
            }
        } else if (utils.isMiniPageLink(linkUrl)) {
            let hyperlink = '';
            // 如果不是以/开头,前端补/
            if (linkUrl.substr(0, 1) === 'p') {
                hyperlink = '/' + linkUrl;
            } else {
                hyperlink = linkUrl;
            }
            if (linkType === 'ordinary') {
                uni.navigateTo(
                    {
                        url: hyperlink,
                        // 比较巧妙的处理 
                        fail: function() {
                            // 支付宝没有走fail
                            uni.switchTab({
                                // 兼容跳tab页面的情况
                                url: hyperlink
                            });
                        }
                    }
                )
            } else {
                uni.redirectTo({
                    url: hyperlink
                })
            }
        }
    }
不知道,你有没有注意到,在判断是不是小程序内部页面的时候,对以page开头或者以/page开头,我这边都认为是小程序内部页面,所以跳转的时候,又做了一次处理,即如果没有/,我这边按会自动添加/,我觉得这是这个方法的亮点之一,其次,问你们一个问题,你觉得我这边跳转到webview页面的时候为什么要编码呢?
答案就是:有一些页面本身后面就会有很多参数,如果不进行编码,微信会认为是不合法的域名,但是如果这个链接是写死的,微信就认为没有问题,这个我也比较郁闷。最后一点,我认为比较巧妙的是,我在 uni.navigateTo跳转失败的时候,让它尝试进行tabBar页面的跳转,这个当时主要是要着急上线,如果按照平时,肯定会传一个标志,来告诉我是什么链接,如果是tabbar页面,就采取uni.switchTab,但这个如果单靠前端分辨不出来是不是tabbar页面,当时还查了一下,看看有没有现成的方法来判断一个链接是不是tabbar页面,但是无果,最后发现,uni.navigateTo有fail回调,就想着如果失败就用uni.switchTab岂不是一行代码就搞定了。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容