在ios应用程序的webview中获取动态更新的html页面的代码?
我试图在ios应用程序的webview中获取html的代码。当使用UIWebView委托方法在web视图中加载页面时,我可以获得html代码。在应用程序中,我有一些动态内容,这些内容是在点击页面中的按钮html按钮后添加的。这是通过一些javascript或ajax调用完成的。但是我找不到任何委托方法来检测web视图中的操作和更改。有谁能给我建议一下获取更新的html页面webview的方法吗?不幸的是,UIWebView没有为ajax请求提供任何代理。总之,我找到了一种方法,可以检测ajax请求何时完成 在包含UIWebView的ViewController中:在ios应用程序的webview中获取动态更新的html页面的代码?,ios,webview,Ios,Webview,我试图在ios应用程序的webview中获取html的代码。当使用UIWebView委托方法在web视图中加载页面时,我可以获得html代码。在应用程序中,我有一些动态内容,这些内容是在点击页面中的按钮html按钮后添加的。这是通过一些javascript或ajax调用完成的。但是我找不到任何委托方法来检测web视图中的操作和更改。有谁能给我建议一下获取更新的html页面webview的方法吗?不幸的是,UIWebView没有为ajax请求提供任何代理。总之,我找到了一种方法,可以检测ajax请
然后听音乐;像处理ajax请求一样调用。您可以使用javascript桥接器并将回调添加到iOS控制器中。你好@riik,谢谢你的回复。以上代码将用于AJAX请求。但是,通过使用javascript,我的html页面中有一些变化,例如调用js函数,该函数将创建元素并将元素添加到html页面的DOM中。我必须在更新后获取html内容。请参见答案中的编辑。也许这对你有用。
#import <JavaScriptCore/JavaScriptCore.h>
- (void) webViewDidFinishLoad: (UIWebView*) webView {
[self injectAjaxListener];
}
-(void)injectAjaxListener {
NSString *jsString =
@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text ="
"$(document).ajaxComplete(function() {ajaxCompleted();});"
"document.getElementsByTagName('head')[0].appendChild(script);";
[self listenToAjaxEvents];
}
-(void)listenToAjaxEvents {
JSContext *_jsContext = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
__weak JSContext *jsContext = _jsContext;
jsContext[@"ajaxCompleted"] = ^(NSString *param1) {
dispatch_async(dispatch_get_main_queue(), ^{
[self showHTMLSourceCode];
});
};
}
-(void)showHTMLSourceCode {
NSString *htmlSourceCode = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML"];
NSLog(@"%@",htmlSourceCode);
}
document.addEventListener("DOMSubtreeModified", function() {
domChanged(););
}, false);