mui预加载

预加载

页面正常打开步骤:先创建 -> 在显示

plus.webview.create( url, id, styles, extras ); // 创建页面
plus.webview.show( id_wvobj, aniShow, duration, showedCB, extras ); // 显示已经创建的或者隐藏的窗口
plus.webview.open( url, id, styles, aniShow, duration, showedCB ); // 创建并打开

问题:在创建打开页面时,比较费时,会出现等待框,影响用户体验,所以用到预加载技术

预加载是在页面还没用到的时候提前创建,当用到的时候直接显示,节约时间,mui提供了两种预加载的方式

mui.init异步加载多个页面
mui.init({
  preloadPages:[
    {
      url:prelaod-page-url,
      id:preload-page-id,
      styles:{},//窗口参数
      extras:{},//自定义扩展参数
      subpages:[{},{}]//预加载页面的子页面
    }
  ],
  preloadLimit:5//预加载窗口数量限制(一旦超出,先进先出)默认不限制
});

问题:因为是异步执行,所以可能会出现无法立即得到webview对象,如下

mui.init({
  preloadPages:[
    {
      url:'list.html',
      id:'list'
    }
  ]
});
var list = plus.webview.getWebviewByid('list');//这里可能返回空;
mui.preload 同步立即返回webview对象,加载1个页面
var page = mui.preload({
    url:new-page-url,
    id:new-page-id,//默认使用当前页面的url作为id
    styles:{},//窗口参数
    extras:{}//自定义扩展参数
});

判断预加载是否成功

方式1在父页面通过如下代码获取当前所有的webview对象,通过if判断是否预加载进来
mui.plusReady(function(){
    setTimeout(function(){
        var array = plus.webview.all();
        if(array){
            for(var i=0,len=array.length;i<len;i++){
                    console.log(array[i].getURL());
                }
        }
    },5000)
});
方式2,通过观察预加载页面打开时没有等待框,mui.openWindow默认先显示等待框

转载于:https://www.cnblogs.com/bonly-ge/p/9645940.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值