检查登录错误Android WebView Javascript
Check login error Android-WebView Javascript
如果登录失败或成功,如何在Android WebView中进行检查?由于用户名和/或密码错误导致登录失败时,登录网页显示以下消息。
<div id="errorMsgId1427032461760" class="errorMessage">
如何使用JavaScript进行检查?(调用next活动有效,但它总是调用next。所以我想运行此检查)。
编辑:我尝试将JavaScript接口添加到webView.loadURL()中,但没有成功。
webView.loadUrl("javascript: if(document.body.innerHTML.toString().indexOf('Invalid') > -1){'n" +
" JSInterface.changeActivity() ;");
第2版:如何使用这个?
if(document.body.innerHTML.toString().indexOf("invalid") > -1){ alert("invalid'");
如果未调用警报,则调用Intent。(警报可以是任何功能)。
编辑3:
我尝试了onConsoleMessage,但它不起作用。这里的代码:
webView.setWebChromeClient(new WebChromeClient() {@
Override
public boolean onConsoleMessage(ConsoleMessage cm) {
String a = cm.toString();
if (a.equalsIgnoreCase("Success")) {
Toast.makeText(Login.this, "Login Successful", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Login.this, Upload.class);
Login.this.finish();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
if (a.equalsIgnoreCase("Error")) {
Toast.makeText(Login.this, "Please enter correct credentials", Toast.LENGTH_LONG).show();
}
return true;
}
});
在onPageFinished方法中为:
webView.setWebViewClient(new WebViewClient() {
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public void onPageFinished(WebView view, final String url) {
webView.loadUrl("javascript: if (document.querySelectorAll('[type=submit]').length) {'n" +
" var x = document.querySelectorAll('[type=submit]');'n" +
" x[0].addEventListener('"click'", function() {'n" +
" if (document.body.innerHTML.toString().indexOf('"Invalid'") > -1) console.log('"Error'");'n" +
" else console.log('"Success'");'n" +
" });};");
return true;
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://192.168.0.101:9999/user"); //Local URL.
我用alert而不是console.log检查了上面的Javascript,它可以工作。
错误是什么?我想不通。
类似这样的东西:
webView.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (!<login page url>.equals(url)) return;
// Available on KitKat and later
view.evaluateJavascript(
"document.getElementsByClassName('errorMessage').length",
new ValueCallback<String>() {
@Override
public void onReceiveValue(String errorMessageCount) {
if ("0".equals(errorMessageCount)) {
// all ok
} else {
// error message detected
}
}
}
);
}
});
如果你也以KitKat之前的版本为目标,那么你将不得不使用一种更复杂的方式从JS中获取结果,如下所述:如何在android的webview中从javascript中获取返回值?
相关文章:
- JavaFX+WebView/Javascript:setTimeOut不起作用调用堆栈来自Java
- 检查登录错误Android WebView Javascript
- 了解 Android webview JavaScript 界面
- 从片段 WebView JavaScript 更新活动图像视图
- 如何检查WebView Javascript接口是否可用
- Webview javascript not executing
- Android WebView - Javascript 不会触发回调函数
- UIWebView vs WebView Javascript Injection
- 来自资产的Android WebView JavaScript
- webview javascript事件通知
- Android Webview Javascript点击事件没有像它应该的那样启动
- Android应用程序关闭时不会出现任何错误WebView Javascript
- 找不到Webview javascript接口函数
- android webview javascript不与loadDataWithBaseUrl工作
- Android WebView: javascript执行后如何加载页面
- Android Webview - javascript屏幕尺寸vs实际屏幕尺寸
- Android webview javascript有时无法加载
- Android WebView javascript接口属性
- Android开发:WebView JavaScript不工作
- 将大数据从Android Activity传输到WebView Javascript