Javascript 使用android的WebView自动填写表单
我正在使用WebView尝试使用我发送的数据填写表单Javascript 使用android的WebView自动填写表单,javascript,java,android,android-webview,Javascript,Java,Android,Android Webview,我正在使用WebView尝试使用我发送的数据填写表单 WebView webView; String url = "http://139.59.34.30/quotation/"; String btn_ci, btn_co, n, a, k, r, m; Intent in; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se
WebView webView;
String url = "http://139.59.34.30/quotation/";
String btn_ci, btn_co, n, a, k, r, m;
Intent in;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
webView = (WebView) findViewById(R.id.webview);
in = getIntent();
btn_ci = in.getStringExtra("checkin");
btn_co = in.getStringExtra("checkout");
n = in.getStringExtra("name");
a = in.getStringExtra("adults");
k = in.getStringExtra("kids");
r = in.getStringExtra("rooms");
m = in.getStringExtra("mail");
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:document.getElementsByName('name').value = '"+n+
"';document.getElementsByName('checkin').value='"+ btn_ci +
"';document.getElementsByName('checkout').value='"+ btn_co +
"';document.getElementsByName('no_of_pax').value='"+ a +
"';document.getElementsByName('no_of_kid').value='"+ k +
"';document.getElementsByName('no_of_rooms').value='"+ r +"';");
}
});
webView.loadUrl(url);
但每次活动执行页面加载一段时间,没有填充值,然后只显示我传递的最后一个字符串。您可以使用下面的代码,而不是onPageFinished中的代码,它将在所有Android API版本上工作
final String js = "javascript: " +
"var nameDoc = document.getElementsByName('name');" +
"nameDoc[0].value = '"+n+ "';" +
"var checkOutDoc = document.getElementsByName('checkout');" +
"checkOutDoc[0].value = '"+btn_co+ "';" +
"var noOFPaxDoc = document.getElementsByName('no_of_pax');" +
"noOFPaxDoc[0].value = '"+a+ "';" + // a should be int based on ur HTML
"var noOFKidDoc = document.getElementsByName('no_of_kid');" +
"noOFKidDoc[0].value = '"+k+ "';" + // a should be int based on ur HTML
"var noOFRoomsDoc = document.getElementsByName('no_of_rooms');" +
"noOFRoomsDoc[0].value = '"+r+ "';" + // a should be int based on ur HTML
"var checkInDoc = document.getElementsByName('checkin');" +
"checkInDoc[0].value = '"+btn_ci+ "';";
if (Build.VERSION.SDK_INT >= 19) {
view.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
}
});
} else {
view.loadUrl(js);
}
final String js=“javascript:”+
“var nameDoc=document.getElementsByName('name');”+
nameDoc[0]。值=“+n+”;“+
“var checkOutDoc=document.getElementsByName('checkout')+
“checkOutDoc[0]。值=”+btn_co+”;”+
“var noOFPaxDoc=document.getElementsByName('no_of_pax');”+
“noOFPaxDoc[0]。值=”“+a+”;“+//a应该是基于ur HTML的int
“var noOFKidDoc=document.getElementsByName('no_of_kid');”+
“noOFKidDoc[0]。值=”“+k+”;“+//a应该是基于ur HTML的int
“var noofromsdoc=document.getElementsByName('no_of_rooms');”+
“noOFRoomsDoc[0]。值=”“+r+”;“+//a应该是基于ur HTML的int
“var checkInDoc=document.getElementsByName('checkin');”+
“checkInDoc[0]。值=”+btn_ci+“;”;
如果(Build.VERSION.SDK_INT>=19){
evaluateJavascript(js,newvaluecallback(){
@凌驾
公共void onReceiveValue(字符串s){
}
});
}否则{
view.loadUrl(js);
}