Hbuilder新建移动app选择登录模板,登录不成功,可能执行太快,main页面loaded事件尚未触发就执行自定义事件,此时必然会失败

min特有的 预加载功能在老版本手机不能顺利执行,体验会降低

解决方案:通过动态判断手机是否支持 ,如果不支持,则采用其他方式

在 setInterval 循环中添加次数,如果大于10次不成功则代表不支持(正常的1次就行通过)

出现问题的代码

var mainPage = mui.preload({

                                             "id": 'main',

                                                        "url": 'main.html'

                                         });

                                              

                                               var main_loaded_flag = false;

                                               mainPage.addEventListener("loaded",function () {

                                                        main_loaded_flag = true;

                                               });

       在上面的代码中  mainPage.addEventListener("loaded",function () {

       这个函数没有正常执行,也就是 mui.preload 预加载失败,则下面的跳转就失败了

 

                                               var toMain = function() {

                                                        //使用定时器的原因:

                                                        //可能执行太快,main页面loaded事件尚未触发就执行自定义事件,此时必然会失败

                                                        var id = setInterval(function () {

                                                                 if(main_loaded_flag){

                                                                           clearInterval(id);

                                                                           $.fire(mainPage, 'show', null);

                                                                           mainPage.show("pop-in");

                                                                 }

                                                        },20);

                                               };

                                              

改成如下方式,做手机兼容:

var toMain = function() {

                                                        var id = setInterval(function () {

                                                                 checkPreloadSuccess ++;

                                                                 if(checkPreloadSuccess>10){

                                                                           checkPreloadSuccess=0;

                                                                           console.log('手机不支持  Preload 采用openWindow');

                                                                           mui.openWindow({

                                                                              url: 'main.html',

                                                                              id: "main"

                                                                           });

                                                                           clearInterval(id);

                                                                 }   

                                                                 if(main_loaded_flag){

                                                                           clearInterval(id);

                                                                           $.fire(mainPage, 'show', null);

                                                                           mainPage.show("pop-in");

                                                                 }

                                                        },20);

                                               };

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值