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を注入します。

次に、カスタム WebViewClient を WebView に設定し、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
        }
    }
});
于 2016-01-29T23:56:48.523 に答える