从这个关于WebViewClientWebChromeClient之间的区别的great explanation看来,如果您使用一个,就不应该使用另一个(对于相同的WebView对象)。

我的理解正确吗?

如果不是,什么时候将WebViewClientWebChromeClient都用于同一个WebView对象?

是否有一个示例示例,其中仅将WebViewClientWebChromeClient都用于同一个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/

10-12 03:21