在 Android 中为 WebView 内的按钮设置 onClick 侦听器

Set an onClick listerner for a button inside a WebView in Android

在我的项目中,我在片段中有一个 WebView,它从 Internet 加载页面。我想在该页面的按钮上设置一个侦听器,以便当用户单击它时我能够移动到不同的片段。我没有正在加载的网页的代码。

我能够为 WebView 本身实现一个 onClick 侦听器 by using this answer,但我想不出一种方法来专门拦截 WebView 内部的按钮按下。

关于如何实现这样的东西有什么建议吗?谢谢

您可以使用 WebViewClient.shouldOverrideUrlLoading 来检测 WebViewClient 上的每个 URL 更改,并据此打开特定的片段,而不是在 webview 中设置按钮的点击监听器

您应该为 WebView 设置 WebViewClient 。这是一个简单的片段:

    WebView webView;
    webView.setWebViewClient(webClient);
    
    WebViewClient webClient = new WebViewClient(){
    
        @Override
        public boolean shouldOverrideUrlLoading(WebView  view, String  url){
            return true;
        }
    
        @Override
        public void onLoadResource(WebView  view, String  url){
            if( url.equals("http://cnn.com") ){
                // Do the job here
            }
        }
    }

向您的按钮添加一个函数,在您的网页中调用 alert("abc")

然后在您的 android 代码中添加以下内容。该代码将拦截您的警报,您可以实现自己的代码。

webView.setWebChromeClient(new WebChromeClient() {
            public boolean onJsAlert(WebView view, String url, final String message, JsResult result) {

                if (message.equals("abc"))
                {
                    result.cancel();                    
                    return true;
                }else 
                  return false;

            }
        });

以上所有答案都是很好的解决方法,但是,我最终使用 this solution and followed the guide on Android Developers page 启用 JavaScript 绑定。请注意,为了使拦截工作,需要在 JavaScript 文件中使用 Android 接口。