21 Android/IOS網頁:WebView 與WKWebView

寫在前面:

記錄開發過程中遇到的問題

 

1.H5 頁面加載到一半加載不出來

public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

    Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();

    /result.confirm();

    return true;

}

分析:

0 onProgressChanged 中有進度,但是不會繼續增加,沒有報錯Log

1 剛開始懷疑是H5 中Js存在死循環,導致頁面卡住 (排除前端代碼)

2 onJsAlert 給出了Toast 提示,但是沒有消費

原因:上述代碼,用Android View的思維,return true, 表示已經處理了

但JsResult 沒有能拿到值,js就會pending

需要增加 result.confirm, 表示alert 已經處理

此外:JsResult 的cancel 和 confirm 對於alert沒有區別

而是用於 onJsConfirm 中的,對應 window.confirm() 的確定與取消

JsResult 的子類JsPromptResult 對應JS中的 window.prompt 提示框

 

2.H5 加載沒有在onPageFinished中返回

@Override

public void onProgressChanged(WebView view, int newProgress) {

    super.onProgressChanged(view, newProgress);

}

分析:

0 onPageFinished 和內核調用機制有關, 使用WebChromeClient 的onProgressChanged == 100

判斷加載完成更加準確

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章