从此great explanation关于 WebViewClient
和 WebChromeClient
之间的区别,似乎如果你使用一个,你不应该使用另一个(对于同一个 WebView 对象)。
我的理解正确吗?
如果不是,何时将 WebViewClient
和 WebChromeClient
用于同一个 WebView
对象?
是否有一个例子是只使用 WebViewClient
和 WebChromeClient
对于同一个 WebView
对象会完成某个目标吗?
最佳答案
您当然可以同时使用它们,它们只是具有不同的功能。设置自己的自定义WebViewClient让你处理onPageFinished、shouldOverrideUrlLoading等,WebChromeClient让你处理Javascript的alert()等函数。
只需创建自己的类,例如:
public class MyWebChromeClient extends WebChromeClient {
//Handle javascript alerts:
@Override
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
{
Log.d("alert", message);
Toast.makeText(context, message, 3000).show();
result.confirm();
return true;
};
...
和/或
public class MyWebViewClient extends WebViewClient {
@Override
//Run script on every page, similar to Greasemonkey:
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:alert('hi')");
}
...
只需覆盖文档中描述的函数,然后在 onCreate 中设置您的客户端:
webview.setWebViewClient(new MyWebViewClient());
webview.setWebChromeClient(new MyWebChromeClient());
关于android - WebViewClient 和 WebChromeClient 是互斥的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6474768/