亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

uni-app禁用返回按鈕/返回鍵的具體實現

 更新時間:2022年11月26日 11:41:34   作者:也?簡  
今天在使用uni-app開發(fā)登錄頁面時遇到一個需求,需要禁用返回按鈕,下面這篇文章主要給大家介紹了關于uni-app禁用返回按鈕/返回鍵的具體實現,需要的朋友可以參考下

前言

使用uni-app開發(fā)原生應用時,遇到需求:

  • 需要禁用物理返回按鈕、手勢返回。
  • uni.navigateBack仍可使用。

實現

  • 當前頁面的onBackPress()中,禁用物理返回
  • pages.json中,去除當前頁面的返回按鈕
  • 當前頁面的mounted()中,隱藏當前頁面的返回按鈕(針對pages.json中設置無效的情況)

具體演示代碼

1、當前頁面中,在onBackPress()控制是否禁用返回按鈕、手勢返回。

onBackPress(options) {
  // 觸發(fā)返回就會調用此方法,這里實現的是禁用物理返回,頂部導航欄的自定義返回 uni.navigateBack 仍可使用
  if (options.from == 'backbutton') {
    return true;
  } else if (options.from == 'navigateBack') {
    return false;
  }
},

onBackPress()中的options.from的值有兩個:backbutton 和 navigateBack。

  • backbutton:表示來源是左上角原生返回按鈕、 Android 返回鍵或Android手勢返回。
  • navigateBack:表示來源是頂部導航欄自定義返回按鈕。使用的是uni-app中的返回api:uni.navigateBack(OBJECT),

2、pages.json中,去除當前頁面的返回按鈕,主要是設置:titleNView

{
  "path": "pages/update/update",
  "style": {
    "navigationStyle": "custom", // 取消本頁面的導航欄
    "app-plus": {
      "animationType": "fade-in", // 設置fade-in淡入動畫,為最合理的動畫類型
      "background": "transparent", // 背景透明
      "backgroundColor": "rgba(0,0,0,0)", // 背景透明
      "popGesture": "none" ,// 關閉IOS屏幕左邊滑動關閉當前頁面的功能
      "titleNView": { //  隱藏當前頁面的返回按鈕
        "titleSize": "18px",
        "autoBackButton": false // 禁用原生導航欄
      }
    }
  }
}

3、當前頁面中,在mounted()中,隱藏當前頁面的返回按鈕(非必須)

mounted(){
  //pages.json中設置autoBackButton:false 無效的,可以在需要去除導航返回的頁面中的mounted鉤子里加上如下代碼段
  var backbutton = document.getElementsByClassName('uni-page-head-hd')[0]
  if(backbutton) backbutton.style.display = 'none';
},

以上就是禁用物理返回按鈕、手勢返回的相關實現邏輯。

附:uni-app H5的返回攔截經驗分享

項目需求,要在用戶試圖關閉或者返回的時候攔截,并彈出提示框。

uni-app的onBackPress只能攔截左上角的返回,物理按鍵和左滑返回攔截不了,需要另外的解決方案。

研究了一下,采用popState,大致實現了功能。

在想要攔截返回的頁面的mounted新增代碼

methods:{
    onBack(){
        //檢測到返回再插一條
        window.history.pushState(null, null, document.URL);
         //在這里彈個彈框什么的
        uni.showModal(...)
    }
},
mounted(){
     //頁面加載后先插一條記錄
     window.history.pushState(null, null, document.URL);
     window.addEventListener("popstate", this.onBack(), false);
}

在destroyed銷毀監(jiān)聽事件,不然會影響其他頁面

destroyed() {
    window.removeEventListener("popstate", this.onBack, false);
},

保險起見,在跳轉到其他頁面的時候,也銷毀監(jiān)聽

methods:{
    toIndex(){
        window.removeEventListener("popstate", this.onBack, false);
        uni.navigateTo({
            url:'/pages/index/index'
        })
    }
}

注意事項:

1.其他頁面的返回事件,要改為 history.back() ,不能是 uni.navigateBack()。

2.有個插件 vue-prevent-browser-back 也是用類似方案,不過不能實現自定義監(jiān)聽。

3.部分瀏覽器,如果用戶進入頁面啥也不干就返回,是監(jiān)聽不到的,最好是彈一個框,讓用戶關閉從而產生交互。這個暫時找不到更好的辦法。

經過測試歸納如下:

safari瀏覽器、firefox瀏覽器、uni-app ios的webview、企業(yè)微信瀏覽器、opera瀏覽器、miui瀏覽器。頁面一打開就能監(jiān)聽到popstate。

微信瀏覽器、chrome瀏覽器、uni-app android的webview、uc瀏覽器、搜狗瀏覽器等大多數chroumin內核瀏覽器,需要頁面交互才能監(jiān)聽popstate

(可能存在版本高低的差異,不一定準確)

總結

到此這篇關于uni-app禁用返回按鈕/返回鍵的文章就介紹到這了,更多相關uni-app禁用返回按鈕內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論