有没有办法将 Javascript 警报转换为在 Android WebView 中显示为 Toast?

Is there a way to convert Javascript alerts to show as Toast in Android WebView?

我有一个网络应用程序可以在大多数页面上使用 Javascript 警报。现在我最近为同一个应用程序创建了一个 WebView 应用程序。该应用程序运行正常,警报显示。

我看到的解决方案建议将 JavaScript 代码绑定到 Android 代码,然后调用这些方法来显示 toast。

我毫不怀疑这行得通,但现在,对我来说,这意味着我必须重新编写触发这些警报的代码。

我的问题是,有没有办法自动捕获所有警报并将其内容显示为 toast?

您可以使用 WebChromeClient:
https://developer.android.com/reference/android/webkit/WebChromeClient

创建它的一个实例,将其设置为您的 webview,并覆盖 onJsAlert
请务必阅读文档,以 return 正确的值,因此它也不会显示 javascript 警报。

感谢 and this answer also。我设法找到了一个完全符合我要求的解决方案。因此,对于将来偶然发现相同问题的任何人,下面的代码片段适合您:


        mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message,
                                     final JsResult result) {
                Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
                result.confirm();
                return true;
            }
        });

其中 mWebView 是 WebView 实例。