欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于uniapp微信小程序左上角返回按鈕的監(jiān)聽詳解

 更新時間:2022年04月21日 11:54:48   作者:永恒鉆五  
uniapp是一個支持多端的技術(shù),因此它是兼容性比較強(qiáng)的,而且速度也很快,下面這篇文章主要給大家介紹了關(guān)于uniapp微信小程序左上角返回按鈕監(jiān)聽的相關(guān)資料,需要的朋友可以參考下

項目場景:

uni-app 開發(fā)微信小程序,界面中點(diǎn)擊左上角的返回按鈕或者是系統(tǒng)自帶的虛擬返回操作,返回前監(jiān)聽用戶是否在頁面內(nèi)進(jìn)行了相應(yīng)操作,如果有則進(jìn)行提示(提示用戶是否確定要返回),如果沒有則直接返回。

問題描述:

uni-app 頁面生命周期中有 onBackPress ,不過不支持微信小程序。
翻看微信小程序官方文檔,并未發(fā)現(xiàn)可以監(jiān)聽到左上角返回按鈕的事件。
查閱相關(guān)技術(shù)文檔,確認(rèn)微信小程序現(xiàn)階段并沒有提供監(jiān)聽左上角返回事件的函數(shù)。

uni-app 頁面 生命周期 部分截圖

原因分析:

頁面A進(jìn)入到頁面B,用戶在頁面B進(jìn)行了一些操作(比如到頁面C選擇了一些項目添加到了頁面B),這時候用戶從頁面B返回(觸發(fā)左上角返回按鈕或者系統(tǒng)自帶的返回事件)。

由于用戶進(jìn)行了操作,產(chǎn)生了滯留數(shù)據(jù),這個數(shù)據(jù)存在了storage里面。

假設(shè)用戶的返回是無意的,我們需要在用戶返回頁面A時進(jìn)行一個確認(rèn),即彈出提示框,讓用戶看到這個操作會清空掉他剛才所選的項目。

如果用戶確認(rèn)是要返回,即返回頁面A,并清空該storage。

如果用戶取消返回,即誤觸了返回按鈕等原因,這時候取消返回事件,頁面停留在頁面B,數(shù)據(jù)storage保留。

解決方案一:

頁面A onshow 生命周期內(nèi)監(jiān)聽 從 頁面B 返回來的數(shù)據(jù),即storage是否有值。

頁面A:

onShow(){
	let choose = uni.getStorageSync('product'), //頁面B緩存的數(shù)據(jù)
	obj = uni.getStorageSync('backsure'); //頁面B需要用到的數(shù)據(jù)(根據(jù)實(shí)際項目開發(fā))
	if(choose.length){
	uni.showModal({
		    title: '提示',
			content: '當(dāng)前頁面有未保存的數(shù)據(jù),您確定要取消嗎?',
		    success: function (res) {
		        if (res.confirm) {
					uni.setStorageSync('product','');
		        } else if (res.cancel) {
					uni.navigateTo({
						url: './pageB?data=' + obj.data
					})
		        }
		    }
		});
	}
},
methods:{
	topageB(){
		let backsure = {
			data : this.data //頁面B需要用到的數(shù)據(jù)
		};
		uni.setStorageSync('backsure',backsure);
		uni.navigateTo({
			url: './pageB?data=' + this.data
		});
	}
}

注意:此處的 backsure 僅僅是頁面B所需要用到的數(shù)據(jù)(即 在onLoad()生命周期需要用到), 根據(jù)實(shí)際情況選擇是否需要加上這個storage。 判斷依據(jù)依然是頁面B返回頁面A的時候 product 這個storage是否有值。

解決方案二:

頁面B 使用custom 自定義導(dǎo)航欄,不使用微信小程序默認(rèn)的導(dǎo)航欄。

1、重寫頁面B 頂部的導(dǎo)航欄,適配所有機(jī)型,參考api :uni.getSystemInfo()。

2、給左上角返回按鈕定義點(diǎn)擊事件,判斷是否確認(rèn)返回。

3、為防止用戶使用系統(tǒng)返回,頁面A需要重復(fù)方案一的步驟。

頁面 B:

//頂部導(dǎo)航欄
<view class="custom_top" :style="{height:top_height+40+'px'}">
	<label class="iconMoney icons iconarrow-left" @click="toback"></label>
	<text>{{thetitle}}</text>
</view>
//生命周期中賦值導(dǎo)航欄高度
onLoad(){
	let that = this;
	uni.getSystemInfo({
		success(res) {
			that.top_height = res.statusBarHeight; //data中 聲明 top_height:0 
		}
	});
}
//methods方法
toback(){
	let choose = uni.getStorageSync('product');
	if(choose.length){
		uni.showModal({
		    title: '提示',
			content: '當(dāng)前頁面有未保存的數(shù)據(jù),您確定要取消嗎?',
		    success: function (res) {
		        if (res.confirm) {
					uni.navigateBack();
					uni.setStorageSync('product','');
		        }
		    }
		});
	}else{
		uni.navigateBack();
	}
}

頁面A同方案一相同。

此方案可以實(shí)現(xiàn)點(diǎn)擊左上角返回按鈕的時候在當(dāng)前頁面(頁面B)中彈框提示用戶, 而方案一中僅僅是在頁面B已經(jīng)返回到頁面A后再觸發(fā)了提示。

這里頁面A實(shí)現(xiàn)的是對用戶用系統(tǒng)的返回按鍵時, 由于小程序無法監(jiān)聽到返回事件, 所以只能是重寫需要返回的頁面B的頂部導(dǎo)航欄, 然后給自定義的返回按鈕加上點(diǎn)擊事件, 實(shí)現(xiàn)當(dāng)前頁面彈框提示。

結(jié)語

1、微信小程序官方尚未提供返回的監(jiān)聽函數(shù),這是目前可以解決問題的最佳方法(如果有其他的歡迎留言討論)

2、如果對頁面B已經(jīng)返回到頁面A后再提示沒有異議,那可以直接采用方案一,更直接,功能需求也可以實(shí)現(xiàn)。

3、方案二是對方案一的補(bǔ)充,同時會更替掉原生的微信小程序?qū)Ш綑冢枰謱懘a適配機(jī)型。

到此這篇關(guān)于關(guān)于uniapp微信小程序左上角返回按鈕監(jiān)聽的文章就介紹到這了,更多相關(guān)uniapp小程序返回按鈕監(jiān)聽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js實(shí)現(xiàn)彈幕墻效果

    js實(shí)現(xiàn)彈幕墻效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)彈幕墻效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • js實(shí)現(xiàn)類似iphone的網(wǎng)頁滑屏解鎖功能示例【附源碼下載】

    js實(shí)現(xiàn)類似iphone的網(wǎng)頁滑屏解鎖功能示例【附源碼下載】

    這篇文章主要介紹了js實(shí)現(xiàn)類似iphone的網(wǎng)頁滑屏解鎖功能,結(jié)合完整實(shí)例形式分析了javascript動態(tài)操作頁面元素實(shí)現(xiàn)解鎖效果的相關(guān)實(shí)現(xiàn)技巧,并附帶供讀者源碼下載參考,需要的朋友可以參考下
    2019-06-06
  • javascript實(shí)現(xiàn)label標(biāo)簽跳出循環(huán)操作

    javascript實(shí)現(xiàn)label標(biāo)簽跳出循環(huán)操作

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)label標(biāo)簽跳出循環(huán)操作,感興趣的朋友可以參考一下
    2016-03-03
  • Webpack打包字體font-awesome的方法示例

    Webpack打包字體font-awesome的方法示例

    本篇文章主要介紹了Webpack打包字體font-awesome的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • js檢查是否關(guān)閉瀏覽器的方法

    js檢查是否關(guān)閉瀏覽器的方法

    這篇文章主要介紹了js檢查是否關(guān)閉瀏覽器的方法,涉及javascript針對窗口事件的判定與操作相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • JS應(yīng)用之禁止抓屏、復(fù)制、打印

    JS應(yīng)用之禁止抓屏、復(fù)制、打印

    js 禁止復(fù)制js 復(fù)制js 禁止右鍵 復(fù)制文件js 禁止 js禁止選擇 js禁止右鍵代碼
    2008-02-02
  • JS中如何將base64轉(zhuǎn)換成file

    JS中如何將base64轉(zhuǎn)換成file

    這篇文章主要介紹了JS中如何將base64轉(zhuǎn)換成file的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 原生JS實(shí)現(xiàn)平滑回到頂部組件

    原生JS實(shí)現(xiàn)平滑回到頂部組件

    返回頂部組件是一種極其常見的網(wǎng)頁功能,需求簡單:頁面滾動一定距離后,顯示返回頂部的按鈕,點(diǎn)擊該按鈕可以將滾動條滾回至頁面開始的位置,接下來通過本文給大家介紹原生JS實(shí)現(xiàn)平滑回到頂部組件,需要的朋友參考下吧
    2016-03-03
  • javascript ASCII和Hex互轉(zhuǎn)的實(shí)現(xiàn)方法

    javascript ASCII和Hex互轉(zhuǎn)的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨avascript ASCII和Hex互轉(zhuǎn)的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • JavaScript中this函數(shù)使用實(shí)例解析

    JavaScript中this函數(shù)使用實(shí)例解析

    這篇文章主要介紹了JavaScript中this函數(shù)使用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02

最新評論