在iOS项目中,从Objective-C访问DOM是可能的,但是并不是很直接。你可以通过编写一些自定义的逻辑来实现从Objective-C访问DOM。其中最常见的方法是在JavaScript中嵌入一个<webview>
元素,然后调用一些HTML/CSS的api来实现DOM内容的交互。
下面是一些可能有用的-webViewDidFinish:loadURL:forFrames:
代理方法。
- (void)webViewDidFinish:(UIWebView *)webView loadURL:(NSURL *)url forFrames:(WebFrameCollection *)frames {
int i;
for (i = 0; i< frames.count; i++) {
NSArray *arr = frames.atIndexedSubscript(i).allFrames;
for (int j = 0; j < arr.count; j++) {
WKFrameInfo *frameInfo = arr.objectAtIndex(j);
NSString *selector = frameInfo.request.dataInjectionPolicy == InjectionPolicy::ShouldProceedWithAllData ? @"click" : @"mousedown";
[webView evaluateJavaScript:@selector name:selector forInjectedFrames:frames.allFrames];
}
}
[webView.mainFrame evaluateJavaScript:@"document.readyState=='complete'" completionHandler:^(id response, NSError *error) {
if (error) {
NSLog(@"Error loading DOM: %@\n", [error description]);
} else {
NSDictionary *dict = response;
// Do something with the DOM
}
}];
}
当然,这只是其中的一种方法,你可以根据需要自由调整,比如使用querySelector
来获取DOM中的元素或调用JavaScript函数来读取或更新DOM内容。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云