Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1033|回复: 0

小程序webview跳转页面后没有返回按钮完美解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-23 14:14:29 | 显示全部楼层 |阅读模式

    随着小程序越来越火爆,使一个产品如果只有公众号H5页面APP显得不怎么完美,总感觉不搭上小程序这趟流量车,就会少了点什么,心里别扭地很。在此驱动下,我所在公司也决定赶紧上车。

    但是,如果要按照小程序的套路重新写一份的话,又感觉付出的时间成本太大了,非常的不划算。于是乎,脑子灵光一闪,想起了小程序貌似有个小弟叫webviewwebview是啥,按字面意思就是网页视图(来自百度翻译)。官方是这么定义的:

    web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。个人类型与海外类型的小程序暂不支持使用。

    简单的讲就是我们可以在小程序内放置一个<web-view>组件来链接我们的HTML页面了。也就是说,已经写好的微信公众号H5页面可以直接挪到小程序了。一行代码就完成公众号到小程序的转移,一行代码就让我们多了一个流量入口,一行代码就解决了重新开发一套小程序代码的难题。想到这真的是激动死了。

    当我兴致冲冲的把链接放进webview中,就像这样:(真实项目链接地址,用自己的域名代替了^_^)

    <!--微信小程序index.wxml-->
    <web-view src="https://www.hxkj.vip/"></web-view>
    

    但是点击跳转页面的时候。唉哟,我去,我当时就真的楞了一下,页面左上角没有!!返回按钮!!导致回不去了,只能不停的往下点,没有回头路,这不是搞笑的吗。。。

    当时想了一种方案,就是在每个H5页面都加上一个带返回按钮的导航栏,但是想了一下,这种方案不可取,因为小程序的头部已经有个导航栏了,再加一个的话就显得非常的不协调,可以用一个字来形容——【丑到爆】。果断弃用!

    看了下其他的小程序,发现如果是两个小程序页面跳转的话,第二个页面的左上角是会有返回按钮的。那我们可以想到,如果在第二个页面也放个webview组件,用来显示跳转之后的链接,不就完美解决了吗?那么问题来了,怎么把主页点击的链接传到第二个页面呢?

    我们可以在H5页面使用jssdkH5页面跳转到小程序页面的方法wx.miniProgram.navigateTo,然后再携带一个weburl参数:

    //H5页面js
    navigate(modelName) { //控制页面跳转---小程序、公众号、非微信跳转方式 【modelName---vue路由名字】
          this.isMiniProgram((res)=>{//判断是否是小程序页面的回调函数
            if (res) {//小程序页面
                 wx.miniProgram.navigateTo({url: '../webview/webview?weburl=https://www.hxkj.vip/#/' + modelName});
            } else {
                 this.$router.push({name: modelName});//非小程序页面使用vue路由跳转
            }
          })
    },
    isMiniProgram(callback) { //是否为小程序环境
          //是否在微信环境
          if (!isWeixin()) {
              callback(false);
          } else {
               //微信API获取当前运行环境
               wx.miniProgram.getEnv((res) => {
                   if (res.miniprogram) {//小程序环境
                       callback(true);
                   } else {
                       callback(false);
                   }
              })
          }
    }
    

    接着在小程序第二个页面webview.js中接收weburl参数,注意配置分享的页面链接:

    // pages/webview/webview.js
    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
        url:''
      },
      
      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        this.setData({
          url: options.weburl //获取H5页面传递过来的weburl
        });
      },
    
      /**
       * 用户点击右上角分享***【特别注意这里,配置分享链接一定要给首页链接,要不然别人点进来又是没有返回按钮的哦】***
       */
      onShareAppMessage: function () {
        return {
          path: '/pages/index/index'
        }
      }
    })
    

    并赋值给webview.wxml中的src属性

    <!--pages/webview/webview.wxml-->
    <web-view src="{{ url }}"></web-view>
    
    好了,这样的话,就完美解决了小程序webview跳转页面后没有返回按钮的问题。

    转载请注明出处:https://www.jianshu.com/p/a7bb1a826548
    作者:TSY
    个人空间:https://www.hxkj.vip

    喜欢的话,可以关注下我的微信公众号

    微信公众号

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-12 16:12 , Processed in 0.059374 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表