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 的博客 Html5—plusready

如有不對之處歡迎指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM