【问题标题】:Input values disappearing when selecting another input - android webView JavaScript injection选择另一个输入时输入值消失 - android webView JavaScript注入
【发布时间】:2022-11-09 18:47:45
【问题描述】:

我正在创建一些代码来保存来自任何网站的表单数据,并在用户请求时填写它。

我正在使用带有 webView 的 java 来加载网页并注入 JavaScript 来执行操作。

一切都按预期工作,但在某些网页中,在填写完输入后,选择另一个输入字段时数据会消失。

private void injectScriptInputValue(){
    //Current web address
    String address = myWebView.getUrl();
    ArrayList<PayInputs> payInputs = new ArrayList<>();

    //Check for data which matches the current web address.
    for (int i = 0; i < payPages.size(); i++) {
        //Stored web address.
        String payPageAddy = payPages.get(i).getAddress();

        if (payPageAddy.compareTo(address) == 0) {
            payInputs = payPages.get(i).getPayInputs();
            break;
        }
    }

    StringBuilder javaScriptInputs = new StringBuilder();

    //Loop through the saved inputs and create javaScript code.
    for (int i = 0; i < payInputs.size(); i++) {
        String id = payInputs.get(i).getId();
        String value = payInputs.get(i).getValue();

        //javaScriptInputs.append("document.getElementById('").append(id).append("').focus()").append(";");
        //javaScriptInputs.append("document.getElementById('").append(id).append("').select()").append(";");
        javaScriptInputs.append("document.getElementById('").append(id).append("').value = '").append(value).append("';");

    }

    StringBuilder sb = new StringBuilder();

    sb.append("(function()");
    sb.append("{");
    sb.append(javaScriptInputs);
    sb.append("}");
    sb.append(")");
    sb.append("()");

    myWebView.loadUrl("javascript:" + sb.toString());
}

网站上是否有可能导致此问题的原因,有没有办法解决此问题?检查数据的输入是否以某种方式格式化并且可以覆盖吗?

【问题讨论】:

    标签: javascript java android input webview


    【解决方案1】:

    我设法通过先选择输入然后添加值然后取消选择来解决这个问题。

        //Loop through the saved inputs and create javaScript code.
        for (int i = 0; i < payInputs.size(); i++) {
            String id = payInputs.get(i).getId();
            String value = payInputs.get(i).getValue();
    
            javaScriptInputs.append("document.getElementById('").append(id).append("').select()").append(";");
            javaScriptInputs.append("document.getElementById('").append(id).append("').value = '").append(value).append("';");
            javaScriptInputs.append("document.getElementById('").append(id).append("').blur()").append(";");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多