自动填写WebView android中的字段

时间:2012-05-03 00:38:46

标签: javascript android webview field

我想用这段代码填写字段,但它给了我错误

Account[] accounts = AccountManager.get(this).getAccounts();
    for (Account account : accounts) {
      // TODO: Check possibleEmail against an email regex or treat
      // account.name as an email address only for certain account.type values.


      String possibleEmail = account.name;



    myWebView.setWebViewClient(new HelloWebViewClient());

    setTitleColor(Color.GRAY); //the title bar color
    myWebView.loadUrl("http://m.gmail.com");
    myWebView.loadUrl("javascript: {document.getElementById('id_email').value ='"+possibleEmail+"'};");


} 

它给了我这个错误

05-02 20:28:24.191:E / Web Console(1402):未捕获的TypeError:无法在以下位置设置null的属性'value':1

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

loadURL是异步的;换句话说,调用loadUrl启动HTTP请求,但在文档下载和呈现之前立即返回。您看到的错误是因为您尝试过早地执行javascript(在下载,解析和呈现文档之前)。

您需要使用WebViewClient,并在执行javascript之前等待页面完成加载。尝试使用onPageFinished回调,但要注意,由于iFrames等原因,你有时会得到多个回调。

希望有所帮助。

修改 如果您的目标是KITKAT及以上,那么您还必须根据Android版本来处理使用哪种方法。 Follwoing代码提供了更好的解释:

 if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
 {
        webView.evaluateJavascript(yourScript, null);
 }
 else
 {
       webView.loadUrl(yourScript);

 }