我正在尝试从 Android 中的 Webview 填写 Webforms。 我已经在这里找到了这段代码:Fill fields in webview automatically
String username = "cristian";
webview.loadUrl("javascript:document.getElementById('username').value = '"+username+"';");
不幸的是,我不明白我必须在哪里打开我想填写的页面。
setContentView(R.layout.web);
final WebView mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(url);
String user="u";
String pwd="p";
mWebView.loadUrl("javascript:document.getElementById('username').value = '"+user+"';document.getElementById('password').value='"+pwd+"';");
当我以这种方式尝试时,网站会显示,但表单中没有任何值。
在此先感谢您的帮助
最佳答案
Android 4.4 新的 WebView 有使用 loadUrl("javascript:")
方法的问题,参数字符串在执行前会被 url-decode。
您可以尝试对 API >= 19 使用 evaluateJavascript()
,对 API < 19 使用 loadUrl()
。
下面的代码适合我。
mWebView.loadUrl(url)
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
String js = "javascript:document.getElementById('username').value = '"+user+"';document.getElementById('password').value='"+pwd+"';";
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (Build.VERSION.SDK_INT >= 19) {
view.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
}
});
} else {
view.loadUrl(js);
}
});
}
请引用:loadUrl("javascript:....") behaviour changed incompatibly in Android 4.4
关于javascript - 使用 Javascript 在 WebView 中填写表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10187908/