[前端][fmui]流程处理页面使用history.go(-1)或ejs.page.close()无法返回上个页面的问题

示例知识库1:ios微信小程序代办处理后无法返回至列表open in new window

示例知识库2:ios蒙速办无法返回至列表open in new window

问题现象

目前问题仅存在于IOS手机FMUI流程处理页面。

问题原因

由于fmui页面添加了hash,在ios中会异常添加页面栈,返回时只能返回上一次添加hash的地址

解决方案

遇到此类问题可以依次尝试按以下方法解决:

方法一:更新新版本FMUI或按照下步骤个性化代码

1、排查epm.js(代码未压缩)/comdto.min.js(代码压缩)是否有异常,找到下面的函数,去除函数内部ejs.page.close({ isBack: 1 })执行前对ejs环境的判断,或者添加当前容器环境判断。

// 监听popstate
window.popStateFn = function () {
    if (Util.storage.getItem('isBack') == '1') {
    	Util.storage.setItem('isBack', '0');
    }
    epm.triggerHookBack(function (r) {
        var closeArr = r.filter(function (b) {
            if (b === true) {
                return b;
            }
        });

        if (closeArr.length === r.length) {
            //如果此处有ejs环境条件判断去掉条件判断
           	//if(ejs.os.ejs){
                ejs.page.close({ isBack: 1 });
            //}
        }
    });
};

方法二:改用第三方容器JSSDK打开和返回webView页面

1、在列表页和工作流页面分别引入第三方容器jssdk

<script>
	SrcBoot.output(['第三方容器jssdk链接']);
</script>

2、判断ios环境或容器环境,列表页使用容器方法打开页面(不改这一步可能导致关闭所有webView)

3、判断ios环境或容器环境,工作流页面使用容器方法返回上一页

最后更新时间::
贡献者: wyanqd