2

嘿伙计们,我想在 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 方法收到任何消息。知道我能做什么吗?提前致谢

4

1 回答 1

4

该方法是一个回调,它不会做你想做的事。

尝试这个

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

注入javascript。

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

还有这个方法评估Javascript ,它可能有助于注入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
        }
    }
});
于 2016-01-29T23:56:48.523 回答