uni-app openwindow打开多个页面后,重写mui.back无效
uni-app openwindow打开多个页面后,重写mui.back无效
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| HBuilderX | 3.1.12 | 云端 |
在底部导航 页面的子页面 按钮点击openwindows多个页面后,plus加载后重写mui.back
var old_back = mui.back;
mui.back = function() {
var btn = ["确定", "取消"];
mui.confirm('确认关闭当前窗口?', 'Hello MUI', btn, function(e) {
if (e.index == 0) {
//执行mui封装好的窗口关闭逻辑;
old_back();
}
});
}
更多关于uni-app openwindow打开多个页面后,重写mui.back无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app openwindow打开多个页面后,重写mui.back无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在uni-app中,mui.back重写无效通常是由于页面层级管理问题导致的。当使用uni.navigateTo或plus.webview.open打开多个页面时,每个页面都会创建独立的Webview实例,mui.back可能被后续页面的实例覆盖。
建议改用uni-app官方提供的页面生命周期和导航方法:
- 在需要拦截返回操作的页面中使用
onBackPress生命周期:
export default {
onBackPress(options) {
uni.showModal({
title: '提示',
content: '确认关闭当前页面?',
success: (res) => {
if (res.confirm) {
// 用户确认返回,执行默认返回逻辑
// 无需额外操作,uni-app会自动处理返回
}
}
})
// 拦截返回操作,需要返回true
return true
}
}
- 如果需要更细粒度的控制,可以使用
uni.addInterceptor拦截页面返回:
uni.addInterceptor('navigateBack', {
invoke(args) {
// 在这里添加确认逻辑
return new Promise((resolve) => {
uni.showModal({
title: '确认返回',
content: '确定要返回吗?',
success: (res) => {
if (res.confirm) {
resolve(args) // 继续执行返回
}
// 取消时不resolve,阻止返回
}
})
})
}
})

