如何从 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
}
}
});
大家好,我想将一些代码注入到 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
}
}
});