方法1
我尝试了以下代码:
- (void)parse
{
[_webView evaluateJavaScript:@"document.getElementsByTagName('a')"
completionHandler:^(id result, NSError *error){
if (error) {
NSLog(@"Error: %@", error.description);
}
else {
//...
}
}];
}
我得到了这个错误:
Error Domain=WKErrorDomain Code=5 "JavaScript execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type}
是否可以直接获取链接数组?我认为它不仅是一个数组,而且可能是DOM的复杂NSDictionary结构。
方法2
然后我尝试了以下代码:
- (void)parse
{
int length = 0;
[_webView evaluateJavaScript:@"document.getElementsByTagName('a').length"
completionHandler:^(id result, NSError *error){
if (error) {
NSLog(@"Error: %@", error.description);
}
else {
NSString *lengthString = (NSString *)result;
NSLog(@"Length String: %@", lengthString);
__block length = (int)[lengthString intValue];
}
}];
NSLog(@"Length: %d", length);
}
我得到了这个警告:
Type specifier missing, defaults to 'int'
使用此日志:
Length String: 242
Length: 0
此后,我计划使用此JS代码解析每个链接:
document.getElementsByTagName('a')[i].href
如何从块内部正确分配长度变量?