uni-app的h5页面的onHide/onUnload方法不触发的问题解决

背景

  • 目的:对h5页面进行埋点过程中,需要对页面浏览时长进行统计,通过生命周期的监听上传埋点日志
  • 预设方案:通过个页面的onShow/onHide/onUnload生命周期对页面的展示/隐藏/销毁进行监听
  • 问题:仅在首页正常触发生命周期,通过跳转进入的其他页面的onShow正常触发,onHide与onUnload不触发

解决过程

  • 推测原因:通过路由跳转的页面属于二级页面,而onHide与onUnload生命周期仅在一级页面中存在

解决方法

  • 二级页面:
    • onShow:正常使用该生命周期监听页面显示,包括后台进前台与路由跳转进入
    • destroyed:用组件生命周期代替onHide与onUnload,监听路由跳转离开
  • app.vue:
    • onHide:应用生命周期对整个应用的前台进入后台进行监听,通过url区分不同页面的埋点日志上传

示例代码

// 一级页面-首页
onShow() {
    this.$$DI.track('enter_page', {
        page_name: '首页'
    })
},
onHide() {
    this.$$DI.track('leave_page', {
        page_name: '首页'
    })
},
onUnLoad() {
    this.$$DI.track('leave_page', {
        page_name: '首页'
    })
},


// 二级页面
onShow() {
    this.$$DI.track('enter_page', {
        page_name: 'a页面'
    })
},
destroyed() {
    this.$$DI.track('leave_page', {
        page_name: 'a页面'
    })
}


// app.vue
onHide() {
    let page_name
    // 根据需要监听的页面路由进行判断添加
    if(window.location.href.includes('basic')) page_name = 'a页面'
    if(page_name) {
        this.$$DI.track('leave_page', {
            page_name
        })
    }
},
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
uni-app页面的生命周期包括onInit、onLoad、onShow、onReady、onHideonUnload等几个阶段。onInit用于监听页面初始化,其参数与onLoad相同,用于接收上个页面传递的数据,但onInit的触发时机要早于onLoad。onLoad页面加载时触发,可以做一些初始化的操作。onShow在页面显示时触发,可以处理一些页面展示的逻辑。onReady在页面初次渲染完成时触发,表示页面已经准备就绪。onHide页面隐藏时触发,可以处理一些页面隐藏的逻辑。onUnload页面卸载时触发,可以做一些页面的清理操作。这些生命周期函数的使用方式是借鉴了小程序和Vue的生命周期的特点,以适应uni-app的开发需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Uni-app中的生命周期](https://blog.csdn.net/qq_53694927/article/details/127622117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [uni-app的使用体验总结](https://download.csdn.net/download/weixin_38740391/15440841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值