uniapp嵌套webview無法返回上一級解決方式
場景:
- 進(jìn)入首頁,自動跳轉(zhuǎn)第三方應(yīng)用
遇到問題
- 在設(shè)備上運(yùn)行時(shí),無法回退上一級,直接退出應(yīng)用了;
- 預(yù)期:一級級的返回頁面;
解決方式
個(gè)人想到臨時(shí)解決方式,歡迎老鐵們可以分享其他方式
- 進(jìn)入首頁
index
,不要先加載web-view
- 新建頁面,例
webview.vue
方式一
例:安卓
index.vue
onLoad() { uni.navigateTo({ url: '/pages/webview/webview' }) }
webview.vue
<template> <view> <web-view src="https://xxx"></web-view> </view> </template>
onUnload() { // #ifdef APP-PLUS // ios退出應(yīng)用方式,下面有寫 plus.runtime.quit(); // 強(qiáng)制退出應(yīng)用.Android // #endif },
方式二
個(gè)人 推薦方式一,簡單一些
- 通過標(biāo)識是否已加載webview頁面,定義全局變量或本地存儲標(biāo)識都可以
- 在 onShow 判斷是否已加載 webview 頁面,已加載 ,則執(zhí)行退出應(yīng)用,否則跳轉(zhuǎn)頁面
App.vue
globalData: { webShowed: false, // 標(biāo)識 },
index.vue
const app = getApp() onShow() { this.handleLaunchJump(); }
handleLaunchJump() { let sysInfo = uni.getSystemInfoSync(); // 這里我處理Android、 Ios,跳轉(zhuǎn)及退出方式,根據(jù)個(gè)人所需 if (!app.globalData.webShowed) { if (sysInfo.platform === 'ios') { uni.redirectTo({ url: this.url // '/pages/webview/webview' }) } else { uni.navigateTo({ url: this.url }) } } else { // #ifdef APP-PLUS if (sysInfo.platform === 'ios') { plus.ios.import('UIApplication').sharedApplication().performSelector('exit'); } else { plus.runtime.quit(); } // #endif } }
webview.vue
<template> <view> <web-view src="https://xxx"></web-view> </view> </template>
onShow() { getApp().globalData.webShowed = true; },
附:解決uniapp使用web-view嵌套H5頁面返回直接退出的問題
<template> <view> <web-view :src="src"></web-view> </view> </template> <script>
var wv; //計(jì)劃創(chuàng)建的webview export default { data() { return { src: "", canBack: false, }; }, onBackPress() { if (wv && this.canBack) { wv.back(); return true; } return false; }, onReady() { // #ifdef APP-PLUS var self = this; var currentWebview = this.$scope.$getAppWebview(); //此對象相當(dāng)于html5plus里的plus.webview.currentWebview()。在uni-app里vue頁面直接使用plus.webview.currentWebview()無效,非v3編譯模式使用this.$mp.page.$getAppWebview() setTimeout(function () { wv = currentWebview.children()[0]; wv.addEventListener( "progressChanged", function (e) { wv.canBack(function (e) { self.canBack = e.canBack; }); }, false ); }, 500); //如果是頁面初始化調(diào)用時(shí),需要延時(shí)一下 // #endif }, }; </script>
總結(jié)
到此這篇關(guān)于uniapp嵌套webview無法返回上一級解決方式的文章就介紹到這了,更多相關(guān)uniapp嵌套webview無法返回上級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
element帶輸入建議el-autocomplete的使用
本文主要介紹了element帶輸入建議el-autocomplete的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03如何在vue-cli中使用css-loader實(shí)現(xiàn)css module
這篇文章主要介紹了如何在vue-cli中使用css-loader實(shí)現(xiàn)css module,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下2021-01-01vue 封裝自定義組件之tabal列表編輯單元格組件實(shí)例代碼
這篇文章主要介紹了vue 封裝自定義組件tabal列表編輯單元格組件實(shí)例代碼,需要的朋友可以參考下2017-09-09基于Vue框架vux組件庫實(shí)現(xiàn)上拉刷新功能
這篇文章主要為大家詳細(xì)介紹了基于Vue框架vux組件庫實(shí)現(xiàn)上拉刷新功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11vue項(xiàng)目關(guān)閉eslint校驗(yàn)
eslint是一個(gè)JavaScript的校驗(yàn)插件,通常用來校驗(yàn)語法或代碼的書寫風(fēng)格。這篇文章主要介紹了vue項(xiàng)目關(guān)閉eslint校驗(yàn),需要的朋友可以參考下2018-03-03Vue數(shù)據(jù)驅(qū)動模擬實(shí)現(xiàn)5
這篇文章主要介紹了Vue數(shù)據(jù)驅(qū)動模擬實(shí)現(xiàn)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01vue項(xiàng)目中路由跳轉(zhuǎn)頁面不變問題及解決
這篇文章主要介紹了vue項(xiàng)目中路由跳轉(zhuǎn)頁面不變問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08vue最強(qiáng)table vxe-table 虛擬滾動列表 前端導(dǎo)出問題分析
最近遇到個(gè)問題,后臺一次性返回2萬條列表數(shù)據(jù)并且需求要求所有數(shù)據(jù)必須全部展示,不能做假分頁,怎么操作呢,下面通過本文介紹下vue最強(qiáng)table vxe-table 虛擬滾動列表 前端導(dǎo)出問題,感興趣的朋友一起看看吧2023-10-10