Aks*_*hat 10 javascript java android
我想让用户输入车辆编号,然后读取数据并向用户显示车辆详细信息.我不想在webview中这样做.我可以使用以下代码填充数据:
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://parivahan.gov.in/rcdlstatus/vahan/rcstatus.xhtml");
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
String reg1="KA51X";
String reg2="2442";
if(isFirstLoad) {
webView.loadUrl("javascript: {" +
"document.getElementById('convVeh_Form:tf_reg_no1').value = '" + reg1 + "';" +
"document.getElementById('convVeh_Form:tf_reg_no2').value = '" + reg2 + "';" +
"var frms = document.getElementsByName('convVeh_Form');" +
"frms[0].submit(); };");
isFirstLoad = false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
这是显示此应用程序数据的网站.
https://parivahan.gov.in/rcdlstatus/vahan/rcstatus.xhtml
现在我尝试使用此行单击提交按钮
"frms[0].submit(); };");
Run Code Online (Sandbox Code Playgroud)
还有这个,
"javascript:(function(){document.getElementById('convVeh_Form:j_idt21').click();})()"
Run Code Online (Sandbox Code Playgroud)
但他们没有工作.如何单击Id为的按钮
convVeh_Form:j_idt21
此外,一旦能够单击按钮,响应将来自网站.如何阅读该响应文本并将其放在app的textview中?
您遇到了一个单独的问题,convVeh_Form:j_idt21只是一个标签(在撰写本文时)。你要convVeh_Form:j_idt27。也许他们改变了?
您可能希望将注入的 javascript 和选择器设置为document.querySelector('[id="convVeh_Form:j_idt27"]').click().
这避免了:作为 css 选择器的特殊字符。
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://parivahan.gov.in/rcdlstatus/vahan/rcstatus.xhtml");
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
String reg1 = "KA51X";
String reg2 = "2442";
if (isFirstLoad) {
webView.loadUrl("javascript: {" +
"document.getElementById('convVeh_Form:tf_reg_no1').value = '" + reg1 + "';" +
"document.getElementById('convVeh_Form:tf_reg_no2').value = '" + reg2 + "';" +
"document.querySelector('[id=\"convVeh_Form:j_idt27\"]').click(); };");
isFirstLoad = false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果您知道它始终是第一个按钮,那么您也可以将其用作button[type="submit"]选择器,这样 Id 就不再重要了。(也许它们会再次改变?)
其他字段将是document.querySelectorAll('input[type="text"]')[0]和[1]。
提交表单后,导航将发生变化。这会触发一个事件,您可以通过子类化 WebView 来挂钩。请参阅另一个问题的答案作为示例。
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
使用它作为您的事件,检测端点处的 URL,然后注入一些新的 javascript 以从页面中提取信息。如果您需要更多帮助,请告诉我。
| 归档时间: |
|
| 查看次数: |
420 次 |
| 最近记录: |