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

时间:2012-04-05 07:14:45

标签: javascript iphone ipad uiwebview autofill

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

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

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

2 个答案:

答案 0 :(得分:1)

嘿,我希望这会在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];
        }
    }

答案 1 :(得分:0)

简而言之,我能想到的唯一答案是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.
}

以上是粗略的轮廓,替换&lt; --- javascript ---&gt;使用javascript代码将用户名和密码填入相关表单并提交。如果加载的页面使用了JQuery,你可以在javascript中使用JQuery。

至于要使用的javascript,这完全取决于相关的网页,所以我可以真正帮助那里。