6***@qq.com
6***@qq.com
  • 发布:2024-06-03 23:22
  • 更新:2024-06-03 23:22
  • 阅读:197

【报Bug】小程序中的某个webview页面无法正常后退

分类:uni小程序sdk

产品分类: 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  
    },  
}

操作步骤:

1、先打开小程序首页,再打开webview的页面,在webview内访问不同的路由,后退正常
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应该是替换其中一个历史,而不是新增)

2024-06-03 23:22 负责人:无 分享
已邀请:

要回复问题请先登录注册