paradox
paradox
  • 发布:2015-02-28 17:21
  • 更新:2015-03-03 17:06
  • 阅读:6081

怎么判断子页面是否已经加载完毕?

分类:MUI
mui.init({  
    swipeBack: false,  
    statusBarBackground: '#f7f7f7',  
    gestureConfig:{  
     doubletap:true  
    },  
    subpages: [{  
     id: 'content',  
     url: 'content.html',  
     styles: {  
      top: 0,  
      bottom: '45px',  
      bounce: 'vertical'  
     }  
    }]  
});

初始化子页面后如何判断子页面是否已经加载完毕?用mui.ready()不行。谢谢!

2015-02-28 17:21 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

不用init的subpage。而是自己手动创建:

类似如下代码(index.html):

main = plus.webview.currentWebview();  

                var content = plus.webview.create('content.html','content',{  
                    top: '45px',  
                        bottom: '55px',  
                        bounce: 'vertical'  
                });  

                main.append(content);  
                content.addEventListener('loaded',function(){  
                    mui.toast("加载完毕");//运行到这里会控制台会显示plus is not defined  
                });
DCloud_UNI_FXY

DCloud_UNI_FXY

mui.plusReady(function(){  
plus.webview.getWebviewById('content').addEventListener('loaded',function(){  
//已完成加载  
});  
});
paradox

paradox (作者)

非常感谢管理员的回复,我将您的代码复制进去后,发现提示错误:
Uncaught TypeError: Cannot call method 'addEventListener' of undefined at index.html:88,意思应该是plusReady时,plus.webview.getWebviewById('content')的类型为undefined,此时子页面尚未加载完毕。后来我用
setTimeout(function(){
plus.webview.getWebviewById('content').addEventListener('loaded',function(){
alert("放在这里可以吗");
});
},5000);
就没问题了,因此可以判断子页面加载完毕的事件并不是plusReady,而是其它。这里的setTimeout时间可能因不同设备有所不同,如何设置一个合理的值呢?
谢谢!

paradox

paradox (作者)

为了避免在主页面上写setTimeout,我直接在子页面的plusReady写:

mui.plusReady(function() {
plus.webview.getWebviewById("content").addEventListener('loaded',function(){
alert("加载完毕");
});
}

调式时,alert无法显示,控制台显示”Uncaught ReferenceError: plus is not defined“。

DCloud_UNI_FXY

DCloud_UNI_FXY

能否发个测试工程给我

paradox

paradox (作者)

谢谢版主!

要回复问题请先登录注册