我正在保存用户在UIWebView中打开的HTML页面中输入的用户名和密码数据。现在,我想要做的是将用户名和密码放回各自的字段并提交表单,我希望此功能适用于几乎任何类型的网站。
目前,我可以使用JavaScript将数据放回各自的字段中。我的问题是当网页上有多个表单时,如何识别填充值的表单。
此外,在我的应用程序开发过程中,我发现出于安全原因,某些网站不会填充密码字段。我应该用什么JavaScript代码来实现这个功能?
答案 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,这完全取决于相关的网页,所以我可以真正帮助那里。