在UIWebView中打开的HTML页面中自动填充用户名和密码

问题描述:

我将用户输入的用户名和密码数据保存在UIWebView中打开的HTML页面中。现在,我想要做的就是将用户名和密码放回各自的字段并提交表单,我希望此功能可用于几乎任何类型的网站。在UIWebView中打开的HTML页面中自动填充用户名和密码

目前,我可以使用JavaScript将数据放回各自的字段。我的问题是当网页上有多个表单时,如何识别填充值的表单。

此外,在我的应用程序的开发过程中,我发现有些网站出于安全原因不允许填充密码字段。我应该使用什么JavaScript代码来实现此功能?

+0

检查 http://*.com/questions/4772341/is-it-possible-for-a-uiwebview-to-save-and-autofill-previously-entered-form-valu – msk 2012-04-05 07:17:04

总之,我能想到的唯一答案就是java脚本。就像,假设你的UIWebView对象是* webView。使类支持UIWebViewDelegate,然后在适当的地方分配代理:

// In viewDidLoad or somewhere appropriate. 
self.webView.delegate = self; 

UIWebView委托函数。

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *fillAndSubmit = [NSString stringWithFormat:@"<--- javascript --->",username,password]; 
    NSString *output = [webView stringByEvaluatingJavaScriptFromString:fillAndSubmit]; 
    // Any other stuff you need to do. 
} 

以上是粗线条的,更换< --- JavaScript的--->用JavaScript代码,将填补该用户名和密码相关表格并提交。如果加载的页面使用JQuery,那么可以在JavaScript中使用JQuery。

至于JavaScript的使用,以及完全依赖于有问题的网页,所以我真的可以帮助那里。

+0

感谢您的答案,但您提供的代码已经实现了我的应用程序..我需要的Java脚本或JQuery代码放在那里几乎适用于任何网页.. – 2012-04-05 07:32:04

+1

在开发我的应用程序时,我遇到了各种网络只允许自动填充用户名字段并将密码字段留空的页面。例如:mail.google.com的登录页面只会自动填写用户名字段。 – 2012-04-05 07:37:14

+0

啊,您可能想在问题中明确说明。 – Diziet 2012-04-05 07:46:23

嘿,我希望这将帮助您在Web视图。

- (void)webViewDidFinishLoad:(UIWebView *)webView 
    { 
      //For Authentication 
     NSString *savedUsername = @"Bapu"; 
     NSString *savedPassword = @"Bapu123"; 

     if (savedUsername.length != 0 && savedPassword.length != 0) 
     { 
     //create js strings 
     NSString *loadUsernameJS = [NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='text']\"); \ 
               for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", savedUsername]; 
     NSString *loadPasswordJS = [NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='password']\"); \ 
             for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", savedPassword]; 

      //autofill the form 
     [webView stringByEvaluatingJavaScriptFromString: loadUsernameJS]; 
     [webView stringByEvaluatingJavaScriptFromString: loadPasswordJS]; 
     } 
    }