如何在Web View中显示的Web页面的输入标记内设置值?

时间:2017-11-06 11:01:09

标签: android webview

我想自动填充表格单元格内的数据,但不能访问它我的HTML代码如下:

<table cellspacing="1" cellpadding="1" border="1">
<tbody>
    <tr>
        <td class="innertd">
            <table border-collapse="collapse" class="inner" id="tbl" cellspacing="2" border="1">
                <thead>
                        <tr>
                            <td>Consumer No</td>
                             <td><input class="number-only" id="consumerNo" style="width:120px;" oratype="string;precision:254" oraerrorelement="consumerNo" tabindex="5" type="text"></td>                           
                        </tr> 
                </thead>
            </table>
        </td>
    </tr>
</tbody>

Android代码如下:

webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(final WebView view, String url) {
            super.onPageFinished(view, url);
            final String consumerNumber = "1234";

            final String JSSetAccountId = "javascript:" +
                    "document.getElementById('consumerNo').value = '" + consumerNumber + "'";

            if (Build.VERSION.SDK_INT >= 19) {
                view.evaluateJavascript(JSSetAccountId, new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String s) {
                    }
                });
            } else {
                view.loadUrl(JSSetAccountId);
            }
            dismissLoadingDialog();

        }
    }

请帮助我。

3 个答案:

答案 0 :(得分:0)

WebView wb;
wb = (WebView) findViewById(R.id.webView1); 
wb.loadUrl("file:///android_asset/web1.html");
wb.getSettings().setJavaScriptEnabled(true);

wb.setWebViewClient(new WebViewClient() {

    @Override
    public void onPageFinished(WebView web, String url) {
        final String consumerNumber = "1234";
        view.loadUrl("javascript:(function(){document.getElementById('consumerNo').value = '"+consumerNo+"';})()");

    }
});

答案 1 :(得分:0)

尝试一下:

view.evaluateJavascript("javascript:  " +
                        "var consumerNo= document.getElementById('consumerNo'); " +
                        "consumerNo.value = '"+consumerNo+"'; " +
                        "consumerNo.dispatchEvent(new Event('input')) ",null);

答案 2 :(得分:0)

我建议您看看jsoup库。它允许解析和处理从文件或URL提取的HTML。 documentation的这一部分显示了一种以HTML中的特定元素为目标的方法。 您可以删除显示的HTML,添加项目,替换项目,更改属性,它非常强大。然后,在进行所需的更改后,只需将已解析的HTML加载到WebView中即可。