
- 发布:2024-06-03 23:22
- 更新:2024-06-03 23:22
- 阅读:197
产品分类: uni小程序SDK
手机系统: 全部
手机厂商: 华为
页面类型: vue
SDK版本号: 3.99
测试过的手机:
示例代码:
var wv;
export default {
data() {
return {
canBack: false
};
},
onLoad() {},
onBackPress() {
if (wv && this.canBack) {
wv.back();
return true;
}
return false;
},
onReady() {
// #ifdef APP-PLUS
var self = this;
var currentWebview = this.$scope.$getAppWebview();
setTimeout(function() {
wv = currentWebview.children()[0];
wv.addEventListener(
'progressChanged',
function(e) {
wv.canBack(function(e) {
self.canBack = e.canBack;
});
},
false
);
}, 1000);
// #endif
},
}
var wv;
export default {
data() {
return {
canBack: false
};
},
onLoad() {},
onBackPress() {
if (wv && this.canBack) {
wv.back();
return true;
}
return false;
},
onReady() {
// #ifdef APP-PLUS
var self = this;
var currentWebview = this.$scope.$getAppWebview();
setTimeout(function() {
wv = currentWebview.children()[0];
wv.addEventListener(
'progressChanged',
function(e) {
wv.canBack(function(e) {
self.canBack = e.canBack;
});
},
false
);
}, 1000);
// #endif
},
}
操作步骤:
1、先打开小程序首页,再打开webview的页面,在webview内访问不同的路由,后退正常
2、直达webview的页面,在webview内访问不同的路由,后退直接关闭了页面回到了首页,无法正常后退
3、先打开小程序首页,再打开webview的页面,在webview内访问不同的路由,webview内有href replace的逻辑,后退会多一步,并不是如浏览器一般,特殊情况有重定向的可能会一直死循环,无法后退到底
1、先打开小程序首页,再打开webview的页面,在webview内访问不同的路由,后退正常
2、直达webview的页面,在webview内访问不同的路由,后退直接关闭了页面回到了首页,无法正常后退
3、先打开小程序首页,再打开webview的页面,在webview内访问不同的路由,webview内有href replace的逻辑,后退会多一步,并不是如浏览器一般,特殊情况有重定向的可能会一直死循环,无法后退到底
预期结果:
2、直达webview的页面,在webview内访问不同的路由,后退正常
3、先打开小程序首页,再打开webview的页面,在webview内访问不同的路由,webview内有href replace的逻辑,应该是替换历史,而不是新增一条历史
2、直达webview的页面,在webview内访问不同的路由,后退正常
3、先打开小程序首页,再打开webview的页面,在webview内访问不同的路由,webview内有href replace的逻辑,应该是替换历史,而不是新增一条历史
实际结果:
上面复现步骤已说明结果
上面复现步骤已说明结果
bug描述:
1、如果是先打开小程序首页,再打开webview的页面,这时候webview的canback那些逻辑可以正常并实现页内后退,到尽头才关闭。(符合预期)
2、但如果是先打开某个重定向页面再打开webview页面,又或者直接打开直达webview的页面,这时候webview后退就直接关闭了。(不符合预期)
3、另一个问题是webview里面的页面replace路由也是一条记录,导致返回需要多返回一次,某些重定向逻辑还可能引发死循环,无法后退到底(不符合预期,replace应该是替换其中一个历史,而不是新增)
0 个回复