uniapp實現(xiàn)webview頁面關(guān)閉功能的代碼示例

實現(xiàn)思路:
1.關(guān)閉按鈕是使用原生button添加的close屬性。(見page.json頁面)
2.監(jiān)聽關(guān)閉按鈕的方法。(onNavigationBarButtonTap)
3.寫實現(xiàn)關(guān)閉webview所有頁面的邏輯。
廢話不多說,直接上代碼
1.page.json添加關(guān)閉按鈕

2.webview頁面實現(xiàn)關(guān)閉邏輯

實現(xiàn)代碼:
<template>
<view v-if="params.url">
<web-view :webview-styles="webviewStyles" :src="`${params.url}`"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
params: {
url: "https://www.hgjt.com/"
},
webviewStyles: {
progress: {
color: "#027AFF"
}
}
}
},
props: {
src: {
type: [String],
default: null
}
},
onLoad(event) {},
onBackPress(event) {
console.log(event, 'event')
},
onNavigationBarButtonTap(e) {
if (e.type == 'close') {
let pages = getCurrentPages()
let page = pages[pages.length - 1];
let currentPages = page.$getAppWebview()
let children = currentPages.children()
if (children.length === 0) {
uni.navigateBack()
} else {
children[0].close()
setTimeout(() => {
uni.navigateBack()
}, 80)
}
return true;
}
}
}
</script>附:uniapp使用webview的頁面需要返回兩次
在使用uniapp的webview組件時,如果需要返回兩次才能退出頁面,有可能是因為在webview中嵌入的H5頁面中使用了history.back()方法,導(dǎo)致返回棧中多了一層。可以嘗試在H5頁面中使用history.go(-1)方法或者uni.navigateBack()方法返回上一級頁面,這樣就可以避免返回棧中多余的一層,實現(xiàn)一次返回退出頁面的效果。另外,也可以在webview組件中設(shè)置vue-router的mode為history模式,這樣就可以使用uni.navigateBack()方法進行返回,而不會出現(xiàn)返回兩次的情況。
總結(jié)
到此這篇關(guān)于uniapp實現(xiàn)webview頁面關(guān)閉功能的文章就介紹到這了,更多相關(guān)uniapp webview頁面關(guān)閉功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3使用vue3-print-nb實現(xiàn)區(qū)域打印功能
這篇文章主要給大家介紹了關(guān)于vue3使用vue3-print-nb實現(xiàn)區(qū)域打印功能的相關(guān)資料,在日常操作中,相信很多人在Vue怎么用插件實現(xiàn)打印功能問題上存在疑惑,需要的朋友可以參考下2023-07-07
使用yarn?build?打包vue項目時靜態(tài)文件或圖片未打包成功的問題及解決方法
這篇文章主要介紹了使用yarn?build?打包vue項目時靜態(tài)文件或圖片未打包成功的問題及解決方法,解決方法不復(fù)雜通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-08-08

