如何从目标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 中的照片框架从图库中访问照片

如何从目标C中的数组中获取当前字符串值

如何从目标C中的stringByEvaluatingJavaScriptFromString:方法执行长javascript?

如何从目标 C 中的 NSDictionary 中检索字符串?