【问题标题】:Fill fields in webview programmatically以编程方式填充 webview 中的字段
【发布时间】:2016-05-08 10:30:23
【问题描述】:

我试图将值插入到 webview 中加载的网页的字段中。

我所做的正是这个 -

String date = "5/8/1994";
webview.loadUrl("javascript:var uselessvar_a =document.getElementById('dpStudentdob_dateInput').value='" + date + "';");

问题

  • 所以这是假设将值插入到给定的字段中 ID。它给了我确切的结果,它插入到字段中。但 当按下提交按钮时,会显示错误,因为此数据是 不正确。但是当我通过键入相同的值来插入值时 接受。
  • 问题在于将值插入到 DOB 字段中 网页。
  • 注册号字段可以正常工作,单击按钮也可以 在我的代码中运行良好。

正在加载的网页是this

我想在网页的日期 DOB 字段中输入日期。

我的完整 java 类是-

public class MainActivity extends AppCompatActivity {

WebView webview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    webview = (WebView) findViewById(R.id.webView);

    webview.getSettings().setBuiltInZoomControls(true);
    webview.getSettings().setDisplayZoomControls(false);

    webview.getSettings().setUseWideViewPort(true);
    webview.getSettings().setLoadWithOverviewMode(true);

    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebChromeClient(new WebChromeClient());

    webview.getSettings().setDomStorageEnabled(true);

    webview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            String password = "1201329022";
            String date = "5/8/1994";
            webview.loadUrl("javascript:var uselessvar =document.getElementById('txtRegNo').value='" + password + "';");
            webview.loadUrl("javascript:var uselessvar_a =document.getElementById('dpStudentdob_dateInput').value='" + date + "';");
            webview.loadUrl("javascript:var uselessvar_b =document.getElementById('btnView').click();");
        }
    });

    webview.loadUrl("http://bputexam.in/StudentSection/ResultPublished/StudentResult.aspx");
}

}

有人对此有什么建议吗。

【问题讨论】:

  • 您没有区分这两个字段。而且您忘记发布表单的来源。
  • 添加一点 javascript 以从该字段中读取值并将键入的大小写与代码大小写进行比较。
  • 不要在线程中启动 AsyncTasks。如果只使用 OnPostExecte,为什么还要使用 AsyncTask?没有意义。
  • class clickbutton extends AsyncTask。所以你正在调用你的 AsyncTask 点击按钮。你喜欢写不可读的代码?
  • 嘿@greenapps 我已经编辑了我的代码。我只是想尽一切办法让我的代码工作。但我失败了。

标签: javascript java android webview


【解决方案1】:

要在 webview 的输入文本字段中插入文本,您必须使用 javascript,如下所示:

webView.loadUrl("javascript:(function(){l=document.getElementById('form1:txtDrname').value='" + editTextInput.getText().toString() + "';})()");

然后你可以点击webview里面的一个按钮来进行搜索:

webView.loadUrl("javascript:(function(){l=document.getElementById('form1:btnSubmit');e=document.createEvent('HTMLEvents');e.initEvent('click',true,true);l.dispatchEvent(e);})()");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 2017-05-23
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    相关资源
    最近更新 更多