如何从 android webview 获取 Javascript 消息

How to get the Javascript messages from android webview

大家好,我想将一些代码注入到 webview 中,看看代码是否成功。我试图覆盖 WebChromeClient 的 onConsoleMessage 方法,但它只报告代码是否是未捕获的引用

public boolean onConsoleMessage (ConsoleMessage consoleMessage){
    System.out.println(consoleMessage.message());
}

我只收到这样的消息:

Uncaught ReferenceError: noob is not defined

当我执行像

这样的有效命令时
document.getElementById("mainPage").innerHTML = "Hello Dolly.";

我想以某种方式知道命令是成功还是失败。 mainPage div 的内容改变得很好,但无论命令是否成功完成,我都没有从 onConsole 方法收到任何消息。 知道我能做什么吗? 提前致谢

该方法是一个回调,它不会执行您想要的操作。

试试这个

webView.loadUrl("javascript:alert('Hey there!')");

注入javascript.

然后您为 WebView 设置自定义 WebViewClient 并覆盖 onReceivedError 以检测任何 JS 错误。

还有这个方法evaluateJavascript,它可能对注入 JS 并检测它是否成功很有用。您的脚本字符串如下所示:

(function() {
    try {
        //do something
        return "ok";
    } catch(err){
        return "error";
    }
})();

所以你可以这样称呼它:

mWebView.evaluateJavascript(<above script here>, new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String s) {
        if("ok".equals(s)){

        } else {
            //error
        }
    }
});