uniapp 動態(tài)啟動頁,可跳轉(zhuǎn)網(wǎng)頁版

經(jīng)過客戶的進一步需求:啟動頁要可以跳轉(zhuǎn)網(wǎng)頁,并且網(wǎng)頁內(nèi)瀏覽不能自動返回到我們的程序,這時候,上一篇文章用js跳轉(zhuǎn)webView的方式就實現(xiàn)不了了,因為沒法監(jiān)聽html返回的數(shù)據(jù),這時怎么辦呢,我們可以按照普通跳轉(zhuǎn)網(wǎng)頁的做法來實現(xiàn),繼續(xù)看吧~

//app.vue
        async onLaunch() {
            //啟動頁
            uni.navigateTo({
                url:`/pages/secondary/bootPage/bootPage`
            })
}
//bootPage.vue
<template>
    <view class="bootPage">
        <div class="content">
            <div class="con">
                <img id="img" :src="imgUrl" @click="onSkipWeb">
            </div>
            <div class="btn" id="timer">
                <div id="info">跳過</div>
                <div class="circleProgress_wrapper btn" @click="onSkip">
                    <div class="wrapper right">
                        <div class="circleProgress rightcircle"></div>
                    </div>
                    <div class="wrapper left">
                        <div class="circleProgress leftcircle"></div>
                    </div>
                </div>
            </div>
        </div>
        <web-view v-if="skipUrl" :src="skipUrl"></web-view>
    </view>
</template>

<script>
//后端接口,獲取啟動頁數(shù)據(jù)
    import {
        openAd
    } from "../../../../api/index.js"
    export default {
        data() {
            return {
                imgUrl: '', //啟動頁圖片
                skipUrl: '',//網(wǎng)頁鏈接
                optUrl: '', //暫存網(wǎng)頁鏈接
                isGoWeb: false, //是否跳轉(zhuǎn)網(wǎng)頁
                timer: '',
                token: '',
            }
        },
        onLoad() {
            this.getOpenAd() 
            this.token = uni.getStorageSync('token')
        },
        onUnload() {
            clearTimeout(this.timer)
        },
        watch: {
//監(jiān)聽是否跳轉(zhuǎn)網(wǎng)頁,如果跳轉(zhuǎn),清空計時器,不然會跳轉(zhuǎn)到程序首頁
            isGoWeb(newVal, oldVal) {
                if (newVal) {
                    clearTimeout(this.timer)
                }
            },
        },
        methods: {
            onSkip() {
                uni.reLaunch({
                    url: '/pages/index/index'
                })
            },
//獲取啟動頁數(shù)據(jù)
            async getOpenAd() {
                const res = await openAd({})
                const {
                    code,
                    data
                } = res.data
                if (code == 1) {
                    this.imgUrl = data.image
                    this.optUrl = data.url
//設置計時器
                    this.timer = setTimeout(() => { 
                        clearTimeout(this.timer)
//因為我的程序是需要登錄的,所以這里通過判斷是否有登錄token,來跳轉(zhuǎn)不同的頁面,不然跳轉(zhuǎn)到首頁監(jiān)聽到未登錄又會跳轉(zhuǎn)到登錄頁;具體跳轉(zhuǎn)根據(jù)自己項目需求來
                        if (this.token) {
                        this.onSkip()
                        } else {
                            uni.reLaunch({
                                url: '/pages/authorzation/loginAndRegister/loginAndRegister'
                            })
                        }
                    }, 6000)
                } else {
                    this.onSkip()
                }
            },
//給webView賦值,實現(xiàn)網(wǎng)頁跳轉(zhuǎn)
            onSkipWeb() {
                if (this.optUrl != '') {
                    this.isGoWeb = true
                    this.skipUrl = this.optUrl
                }
            },
        }
    }
</script>

<style lang="scss" scoped>
    * {
        margin: 0;
        padding: 0;
    }

    .bootPage {
        width: 100vw;
        height: 100vh;
    }

    .content {
        width: 100%;
        height: 100%;
    }

    .content .con {
        width: 100%;
        height: 100%;
        font-size: 0;
        display: flex;
        align-items: center;
    }

    #img {
        width: 100vw;
        height: 100vh;
    }

    #timer {
        display: inline-block;
        position: fixed;
        top: 40px;
        right: 10px;
    }

    #info {
        position: absolute;
        top: 0;
        left: 0;
        width: 36px;
        height: 36px;
        line-height: 36px;
        border-radius: 50%;
        background-color: rgba(0, 0, 0, 0.3);
        text-align: center;
        color: #FFFFFF;
        font-size: 12px;
    }

    .circleProgress_wrapper {
        width: 36px;
        height: 36px;
        position: relative;
    }

    .wrapper {
        width: 18px;
        height: 36px;
        position: absolute;
        top: 0;
        overflow: hidden;
    }

    .right {
        right: 0;
    }

    .left {
        left: 0;
    }

    .circleProgress {
        width: 32px;
        height: 32px;
        border: 2px solid #FFFFFF;
        border-radius: 50%;
        position: absolute;
        top: 0;
        -webkit-transform: rotate(45deg);
    }

    .rightcircle {
        border-top: 2px solid #03A9F4;
        border-right: 2px solid #03A9F4;
        right: 0;
        -webkit-animation: circleProgressLoad_right 4s linear;
        /*動畫停留在最后一幀*/
        animation-fill-mode: forwards;
        -moz-animation-fill-mode: forwards;
        -webkit-animation-fill-mode: forwards;
        -o-animation-fill-mode: forwards;
    }

    .leftcircle {
        border-bottom: 2px solid #03A9F4;
        border-left: 2px solid #03A9F4;
        left: 0;
        -webkit-animation: circleProgressLoad_left 6s linear;
        /*動畫停留在最后一幀*/
        animation-fill-mode: forwards;
        -moz-animation-fill-mode: forwards;
        -webkit-animation-fill-mode: forwards;
        -o-animation-fill-mode: forwards;
    }

    @-webkit-keyframes circleProgressLoad_right {
        0% {
            border-top: 2px solid #03A9F4;
            border-right: 2px solid #03A9F4;
            -webkit-transform: rotate(45deg);
        }

        50% {
            border-top: 2px solid #03A9F4;
            border-right: 2px solid #03A9F4;
            border-left: 2px solid #FFFFFF;
            border-bottom: 2px solid #FFFFFF;
            -webkit-transform: rotate(225deg);
        }

        100% {
            border-left: 2px solid #FFFFFF;
            border-bottom: 2px solid #FFFFFF;
            -webkit-transform: rotate(225deg);
        }
    }

    @-webkit-keyframes circleProgressLoad_left {
        0% {
            border-bottom: 2px solid #03A9F4;
            border-left: 2px solid #03A9F4;
            -webkit-transform: rotate(45deg);
        }

        50% {
            border-bottom: 2px solid #03A9F4;
            border-left: 2px solid #03A9F4;
            border-top: 2px solid #FFFFFF;
            border-right: 2px solid #FFFFFF;
            -webkit-transform: rotate(45deg);
        }

        100% {
            border-top: 2px solid #FFFFFF;
            border-right: 2px solid #FFFFFF;
            -webkit-transform: rotate(225deg);
        }
    }
</style>

總結: 用這個方法實現(xiàn)會出現(xiàn)一個問題,webView加載前會有一兩秒的白屏,如果pages.json內(nèi),首頁參數(shù)放在第一的話,會出現(xiàn)幾秒顯示首頁,然后又顯示開屏頁面,這個還沒找到好的解決方法,我是把開屏頁放在第一,這樣這幾秒顯示的就是開屏頁,但還會出現(xiàn)二次加載的情況,如果有什么好的解決方案也麻煩留言告訴我一下;
plus.navigator.closeSplashscreen();據(jù)說這個可以處理,但是我沒看出來
manifest.json中splashscreen->autoclose 設置為 true即横,然后設置splashscreen->delay 的時間長一點噪生,可以規(guī)避啟動頁過快關閉的問題,但是還是會一閃而過

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市东囚,隨后出現(xiàn)的幾起案子跺嗽,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桨嫁,死亡現(xiàn)場離奇詭異植兰,居然都是意外死亡,警方通過查閱死者的電腦和手機璃吧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門楣导,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人畜挨,你說我怎么就攤上這事筒繁。” “怎么了巴元?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵毡咏,是天一觀的道長。 經(jīng)常有香客問我逮刨,道長血当,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任禀忆,我火速辦了婚禮臊旭,結果婚禮上,老公的妹妹穿的比我還像新娘箩退。我一直安慰自己离熏,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布戴涝。 她就那樣靜靜地躺著滋戳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啥刻。 梳的紋絲不亂的頭發(fā)上奸鸯,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音可帽,去河邊找鬼娄涩。 笑死,一個胖子當著我的面吹牛映跟,可吹牛的內(nèi)容都是我干的蓄拣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼努隙,長吁一口氣:“原來是場噩夢啊……” “哼球恤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起荸镊,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤咽斧,失蹤者是張志新(化名)和其女友劉穎堪置,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體张惹,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡晋柱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诵叁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雁竞。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拧额,靈堂內(nèi)的尸體忽然破棺而出碑诉,到底是詐尸還是另有隱情,我是刑警寧澤侥锦,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布进栽,位于F島的核電站,受9級特大地震影響恭垦,放射性物質(zhì)發(fā)生泄漏快毛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一番挺、第九天 我趴在偏房一處隱蔽的房頂上張望唠帝。 院中可真熱鬧,春花似錦玄柏、人聲如沸襟衰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瀑晒。三九已至,卻和暖如春徘意,著一層夾襖步出監(jiān)牢的瞬間苔悦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工椎咧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玖详,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓邑退,卻偏偏與公主長得像竹宋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子地技,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容