因为我是编程新手,所以我做了这样的事情:
- (void)completeUserFieldsForWebView:(UIWebView *)webView withUsername:(NSString *)username {
// TextField Which has Value "email"
NSString *loadUsernameJS =
[NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='email']\"); \
for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", username];
// TextField Which has Value "Text" if email is not found
NSString *loadText =
[NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='text']\"); \
for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", username];
[webView stringByEvaluatingJavaScriptFromString: loadUsernameJS];
[webView stringByEvaluatingJavaScriptFromString: loadText];
}
根据我的输入填充所有文本字段。 。 。
- (void)completePasswordFieldsForWebView:(UIWebView *)webView withPassword:(NSString *)password {
NSString *loadPasswordJS =
[NSString stringWithFormat:@"var passFields = document.querySelectorAll(\"input[type='password']\"); \
for (var i = passFields.length>>> 0; i--;) { passFields[i].value ='%@';}", password];
[webView stringByEvaluatingJavaScriptFromString: loadPasswordJS];
}
它填充 UIWebView 中某个 HTML 页面中的 Password 参数。 。 。
问题是如何将自己的图像注入特定的文本框中?
尝试第一:
[webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text = \"function myFunction() { "
"var field = document.getElementById('txtAdminPwd');"
"field.style.backgroundImage='url(icon1.png)';"
"}\";"
"document.getElementsByTagName('head')[0].appendChild(script);"];
[webView stringByEvaluatingJavaScriptFromString:@"myFunction();"];
没有获得成功。 。 。
尝试 2 号(@arun 的):
NSString *cssString = @".login-text-box-bg1{ background-image:url(myProjectName/Arun.png); background-position: right top; background-repeat: no-repeat; background-size: contain; }"; // 1
NSString *javascriptString = @"var style = document.createElement('style'); style.innerHTML = '%@'; document.head.appendChild(style)"; // 2
NSString *javascriptWithCSSString = [NSString stringWithFormat:javascriptString, cssString]; // 3
[webView stringByEvaluatingJavaScriptFromString:javascriptWithCSSString]; // 4
先生,感谢您的努力,但它仍然没有解决通用方法。 。 。
New Test:
我可以通过 [inputNode getAttributeNamed:@"id"] [method] 获取 id 或类名2 https://github.com/zootreeves/Objective-C-HMTL-Parser
现在,如果我做这样的事情怎么办
[webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text = \"function myFunction() { "
"var field = document.getElementById('%@');"
"field.style.backgroundImage = 'url('icon1.png')';"
"}\";"
"document.getElementsByTagName('head')[0].appendChild(script);",[inputNode getAttributeNamed:@"id"]];
[webView stringByEvaluatingJavaScriptFromString:@"myFunction();"];
但它抛出了一个错误,我们不能传递一个参数吗?离开:\
我的实际座右铭是将本地图像显示到每个输入标签中(通用)
Done:
NSString *strJSInjection = [NSString stringWithFormat:@".%@{ background-image:url(https://s29.postimg.org/qqxoigjbr/Arun_Photo.png); background-position: right top; background-repeat: no-repeat; background-size: contain; }",[inputNode getAttributeNamed:@"class"]];
NSString *cssString = strJSInjection; // 1
NSString *javascriptString = @"var style = document.createElement('style'); style.innerHTML = '%@'; document.head.appendChild(style)"; // 2
NSString *javascriptWithCSSString = [NSString stringWithFormat:javascriptString, cssString]; // 3
[webView stringByEvaluatingJavaScriptFromString:javascriptWithCSSString]; // 4