javascript - 使用 Javascript 在 WebView 中填写表单

标签 javascript android android-webview

我正在尝试从 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/

相关文章:

javascript - Alexa 问答技能

javascript - 在 Node.js 上停用 YUI3 的 INFO 消息?

c# - 如何保持谷歌地图缩放水平?

java - ScrollView 中的权重

android - 在按下主页按钮时重新启动我的应用程序 Activity

javascript - 在 Javascript 文件中嵌入 VBScript

java - 如何在特定时间后将应用程序发送到后台

Android WebView 在 WebView 中点击打开不是默认浏览器?

flutter_inappwebview 5.3.2 包在选择文件或图像时使应用程序崩溃

android-emulator - 在 SDK 模拟器上更新 Android 系统 WebView