在ios应用程序的webview中获取动态更新的html页面的代码?

在ios应用程序的webview中获取动态更新的html页面的代码?,ios,webview,Ios,Webview,我试图在ios应用程序的webview中获取html的代码。当使用UIWebView委托方法在web视图中加载页面时,我可以获得html代码。在应用程序中,我有一些动态内容,这些内容是在点击页面中的按钮html按钮后添加的。这是通过一些javascript或ajax调用完成的。但是我找不到任何委托方法来检测web视图中的操作和更改。有谁能给我建议一下获取更新的html页面webview的方法吗?不幸的是,UIWebView没有为ajax请求提供任何代理。总之,我找到了一种方法,可以检测ajax请

我试图在ios应用程序的webview中获取html的代码。当使用UIWebView委托方法在web视图中加载页面时,我可以获得html代码。在应用程序中,我有一些动态内容,这些内容是在点击页面中的按钮html按钮后添加的。这是通过一些javascript或ajax调用完成的。但是我找不到任何委托方法来检测web视图中的操作和更改。有谁能给我建议一下获取更新的html页面webview的方法吗?

不幸的是,UIWebView没有为ajax请求提供任何代理。总之,我找到了一种方法,可以检测ajax请求何时完成

在包含UIWebView的ViewController中:


然后听音乐;像处理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);