如何从目标C中的stringByEvaluatingJavaScriptFromString:方法执行长javascript?
Posted
技术标签:
【中文标题】如何从目标C中的stringByEvaluatingJavaScriptFromString:方法执行长javascript?【英文标题】:How to execute long javascript from stringByEvaluatingJavaScriptFromString: method in objective C? 【发布时间】:2015-04-02 03:45:40 【问题描述】:我想获取用户在网页输入字段中输入的所有值。我试过这段代码:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
NSString *javascript = @"var e = document.getElementsByTagName('input')for(var e in elements)if(e.type == 'text')e.value";
NSString *html = [myWebView stringByEvaluatingJavaScriptFromString:javaScript];
NSLog(@"test of html: %@",html);
return YES;
好像不行:
如果我知道 id:
javaScript = @"document.getElementById('lst-ib').value";
NSString *html = [myWebView stringByEvaluatingJavaScriptFromString:javaScript];
它会起作用的。
【问题讨论】:
【参考方案1】:for (int i = 0; i<100; i++)
NSString *javaScript = [NSString stringWithFormat:@"document.getElementsByTagName('input')[%d].value",i];
NSString *test = [NSString stringWithFormat:@"document.getElementsByTagName('input')[%d].name",i];
NSString *html = [myWebView stringByEvaluatingJavaScriptFromString:javaScript];
NSString *html2 = [myWebView stringByEvaluatingJavaScriptFromString:test];
if (html.length > 2)
NSLog(@"Value %d: >>>> %@ %@",i,html,html2);
这解决了我的问题。我没有实现长javascript,而是通过objective c循环了代码。
【讨论】:
以上是关于如何从目标C中的stringByEvaluatingJavaScriptFromString:方法执行长javascript?的主要内容,如果未能解决你的问题,请参考以下文章
如何从目标 c 中的 pod 文件访问我的 swift 项目文件?
如何从 Swift 类中检索目标 C 类中的 Userdefault?
如何从目标C中的stringByEvaluatingJavaScriptFromString:方法执行长javascript?