mui|mui.plusReady里面的函数不执行??


无论是在本地的浏览器还是在iPhone上真机运行都出现奇怪的错误,比如说子页面样式成为乱码,无法跳转子页面等等,一开始并没有意识到是mui.plusReady的问题,后来调试时发现是plusReady里面的函数都没有执行。获取解决方法可以直接看1-和2-。

1-

可以先排查新手容易犯但同时也容易解决的问题:

1.该项目是否为移动端,如果是网页端则不需要用到plusReady,可以直接用ready

2.是否在真机上运行(因为大部分人会在本地浏览器上调试页面,而plusReady在浏览器上不执行)

3.再看连接真机的数据线其质量是否有保证(能否高速传输数据)

4.到浏览器按f12、console选项里查看代码里是否有语法报错

2-

以上可能性排查了,建议再尝试以下方式:

1>如果只是实现创建子页面、关闭页面、手势事件配置、预加载、下拉刷新、上拉加载,这些功能,可以直接将plusReady换成ready。

2>不调用mui.plusReady的方法,改为:

if(window.plus){ 
    // 在这里调用5+ API 
}else{// 兼容老版本的plusready事件 
    document.addEventListener('plusready',function () { 
        // 在这里调用5+ API 
    },false); 
} 

3-解释2中的原因

ready和plusReady的区别:

一个是ready的dom页面,另一个是ready的H5的接口。

在本人(仅限某些功能)的尝试中,在plusReady运行不出来的代码中,却可以ready中运行。原因是这些功能已经被mui封装,在调用mui.init时已经配置过了。注意在页面加载时的时序为:

1. 加载html页面
2. 解析html页面(下载script/link等节点引用的资源,如js/css文件)
3. 触发DOMContentLoaded事件*(该事件完成时,mui.ready将会触发)
4. 注入5+ API
5. 触发plusready事件

plusReady事件是最后才完成的,故不能一味的使用ready代替plusReady。

参考博客,感谢:U5B89 的博客 

如有不对之处欢迎指正