微信小程序阻止页面返回实例详解(包滑动、自动返回键)

 更新时间:2023年06月01日 11:18:42   作者:奥特曼  
小程序如果在页面内进行复杂的界面设计,用户进行返回操作会直接离开当前页面,不符合用户预期,下面这篇文章主要给大家介绍了关于微信小程序阻止页面返回(包滑动、自动返回键)的相关资料,需要的朋友可以参考下

前言

这个场景还是挺有意思的,比如某多多,只要你点左上角的返回 好家伙,满满又 花不了 的优惠券就来了,让你拥有一种消费最划算的感觉。

如果你的场景比较简单,只是对左上角的返回进行监听,只需要关闭自带的导航栏,手写导航栏或用ui库的写好的导航栏就好了。然后给写好的导航栏的返回按钮添加一个返回的事件做自己想要实现的场景就好了。

一、自定义导航栏

自定义导航栏配置:

{
	"path": "pages/login/login",
	"style": {
+		"navigationStyle": "custom"
	}
}

二、 wx.enableAlertBeforeUnload

如果你的场景点击返回时只用来提示一下用户 类似于用一个showModel(提示框)的展示效果,可以使用wx.enableAlertBeforeUnload,只要一点击左上角的返回就会触发当前事件,如果点击确定退出当前页,如果点击取消留在当前页面。

onLoad(e) {
			uni.enableAlertBeforeUnload({
			    message: "返回上页时弹出对话框",
			    success: function (res) {
			      console.log("点击确认按钮了:", res);
			    },
			    fail: function (errMsg) {
			      console.log("点击取消按钮了:", errMsg);
			    },
			 })
		},

三、page-container 

如果你的场景比较复杂,手机都会有自带的滑动返回,例如ios的滑动返回,安卓的滑动返回和back返回键,就需要用到page-container,他的效果类似于弹窗的形式存在着。

<page-container :show="true"  :duration="false" :overlay="false">
    存放内容
</page-container>

当点击返回按钮时 会先执行把当前的page-container给隐藏掉,再次点击返回时才能够返回上一页。

在正常逻辑下 如果想要优惠券只弹出一次,只需要把page-container 放在外面 于内容隔离开,当点击关闭时先把page-container给隐藏掉,并不会触发当前页的返回,当关闭page-container时会有离开前的事件,只需要在离开前的事件中添加对应的显示优惠券逻辑即可。

<template>
	<view   >
		<scroll-view scroll-y="true" style="height: 100vh;" :scroll-top="top"  class="mainBox" @scroll="scroll">
			<view class="" v-for="item in 99">
					我是内容
			</view>
	</scroll-view>
	<page-container :show="true"  :duration="false" :overlay="false" @beforeleave="beforeleave"></page-container>
	</view>
</template>
methods:{
	beforeleave(){
				uni.showModal({
					title:'弹出优惠券逻辑'
				})
			},
}

 如果呢 你这个项目比较特别特别的恶心,只要你点击左上角的返回我就不让你出去,什么时候点击我指定的返回你才够出去,什么都得听我的! 实现思路也是一直在原地进入当前页面。好处就是我能知道你想要返回了,确定就是会有一个进入的加载效果。

完整代码

<template>
	<page-container :show="isShow"  :duration="false" :overlay="false"  @beforeleave="beforeleave" @afterleave="afterleave"   >
		<scroll-view scroll-y="true" style="height: 100vh;" :scroll-top="top"  class="mainBox" @scroll="scroll">
			<view class="back" @click="back">
				指定返回按钮
			</view>
			<view class="" v-for="item in 99">
				我是内容
			</view>
		</view>
	</scroll-view>
	</page-container>
</template>
<script>
	export default {
		data() {
			return {
				isShow:true, 
				top:0,
				scrollTop:0,
			}
		},
		onLoad(e) {
			this.top = e.top
		},
		methods: {
			back(){
				this.isShow = false
				console.log('点击返回了');
				uni.navigateBack()
			},
			beforeleave(){
				if(!this.isShow) return uni.navigateBack()
				console.log('点击返回了');
				uni.redirectTo({
					url:`/pages/mine/test?top=${this.scrollTop}`,
					fail(err) {
						console.log(err);
					}
				})
			},
			// 需要在退出一次 否则退不出去
			afterleave(){
				if(!this.isShow) return uni.navigateBack()
			},
			// 记录当前位置 下次进来时自动转到刚才的位置
			scroll(e){
				this.scrollTop = e.target.scrollTop
			}
		},
	}
</script>

总结

到此这篇关于微信小程序阻止页面返回(包滑动、自动返回键)的文章就介绍到这了,更多相关微信小程序阻止页面返回内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js的math中缺少的数学方法小结

    js的math中缺少的数学方法小结

    JavaScript Math对象包含一些真正有用且强大的数学运算,但它缺乏大多数其他语言提供的许多重要运算,例如求和,乘积,奇数和偶数等等,本文就来介绍一下
    2023-08-08
  • js实现跟随鼠标移动且带关闭功能的图片广告实例

    js实现跟随鼠标移动且带关闭功能的图片广告实例

    这篇文章主要介绍了js实现跟随鼠标移动且带关闭功能的图片广告,实例分析了javascript操作鼠标事件及html元素的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • JavaScript表单验证示例详解

    JavaScript表单验证示例详解

    这篇文章主要为大家详细介绍了JavaScript表单验证示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • echarts 移动端竖着显示效果实现

    echarts 移动端竖着显示效果实现

    这篇文章主要为大家介绍了echarts 移动端竖着显示效果实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Svelte 和 React的比较详解(一)

    Svelte 和 React的比较详解(一)

    在这篇文章中,我将Svelte 还是 React作了对比,不能以个人意见代表谁好谁坏。以及我发现使用这两个框架的一些区别,感兴趣的小伙伴可以参考阅读
    2023-04-04
  • js DNA动态序列比对代码

    js DNA动态序列比对代码

    JavaScript动态序列比对代码,随便 写着玩的,在网上见到用VC、VB写的比较多,这个算法以前在高中课本上见到过,我只是用Js写一下试试,或许还不是太准确。
    2010-07-07
  • 在element-ui的select下拉框加上滚动加载

    在element-ui的select下拉框加上滚动加载

    这篇文章主要介绍了在element-ui的select下拉框加上滚动加载,本文以以element-ui中的select为例,给大家介绍的非常详细,需要的朋友可以参考下
    2019-04-04
  • JavaScript生成器函数Generator解决异步操作问题

    JavaScript生成器函数Generator解决异步操作问题

    这篇文章主要为大家介绍了JavaScript生成器函数Generator解决异步操作问题示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Bootstrap CSS布局之表格

    Bootstrap CSS布局之表格

    这篇文章主要为大家详细介绍了Bootstrap CSS布局之表格的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • js FLASH幻灯片字符串中有连接符&的处理方法

    js FLASH幻灯片字符串中有连接符&的处理方法

    一般情况下我们在FLASH幻灯片字符串中有连接符时点击链接就会不正常,造成链接中的参数丢失,那么就需要用encodeURIComponent来对链接地址进行编码
    2012-03-03

最新评论