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