从这个关于WebViewClient
和WebChromeClient
之间的区别的great explanation看来,如果您使用一个,就不应该使用另一个(对于相同的WebView对象)。
我的理解正确吗?
如果不是,什么时候将WebViewClient
和WebChromeClient
都用于同一个WebView
对象?
是否有一个示例示例,其中仅将WebViewClient
和WebChromeClient
都用于同一个WebView
对象就可以实现某个目标?
最佳答案
您当然可以同时使用这两种功能,它们只是功能不同。设置自己的自定义WebViewClient可以处理onPageFinished,shouldOverrideUrlLoading等,WebChromeClient可以处理Javascript的alert()和其他功能。
只需创建自己的类(class),例如:
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/