Fill form in WebView with Javascript

后端 未结 4 1494
旧时难觅i
旧时难觅i 2020-12-05 19:33

I\'m trying to fill Webforms from a Webview in Android. I\'ve already found this piece of code here: Fill fields in webview automatically

String username = \         


        
4条回答
  •  误落风尘
    2020-12-05 20:18

    I had the same issue, and after following different explanations on stackOverflow, I succeed to make mine working.

    here is my approach

    webView.loadUrl(url);
            webView.getSettings().setDomStorageEnabled(true);
            webView.setWebViewClient(new WebViewClient(){
                public void onPageFinished(WebView view, String url) {
                    String email="email@email.jp";
    
                    //view.loadUrl("javascript:document.getElementById('email').value = '"+email+"'");
                    view.loadUrl("javascript:document.forms[0].email.value = '"+email+"';");
                    Log.d("email", "can not add email");
                }
            });
    

    2 things : 1) you need to add this line webView.getSettings().setDomStorageEnabled(true); (reference: Android WebView always returns null for javascript getElementById on loadUrl)

    2) you need to access the variable in your php code by using this view.loadUrl("javascript:document.forms[0].email.value = '"+email+"';"); as you can see in my code I used the solution proposed by @gnpaolo, but it didn't work for me so I commented it and use this one. (reference: How to inject a String into Android WebView)

    Finally, just want to add that you do not need to create a special javascript.

    one more thing the forms[0] is the position of the variable in the php form, and in my case, I have the email of the user, so I wrote view.loadUrl("javascript:document.forms[0].email.value = '"+email+"';");

    Hope, this can help others.

提交回复
热议问题