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

判断加载完成更加准确

猜你喜欢

转载自blog.csdn.net/qq_42022061/article/details/80944826