2

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

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

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

4

2 回答 2

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];
        }
    }
于 2012-05-17T05:13:20.917 回答
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.
}

以上是一个粗略的大纲,将 <--- javascript ---> 替换为 javascript 代码,该代码会将用户名和密码填写到相关表单中并提交。如果加载的页面使用 JQuery,您可以在此处的 javascript 中使用 JQuery。

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

于 2012-04-05T07:24:43.427 回答