無論是在本地的瀏覽器還是在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 的博客 Html5—plusready
如有不對之處歡迎指正