I have a UIWebView
and one page has an AJAX component whose content changes when the user clicks a button. How can I know when the content has loaded inside the UIWebView
?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You'll need to do two things:
In your JavaScript code, have the
XMLHTTPRequest
signal that the AJAX request is complete with a custom URL:var req = new XMLHttpRequest(); req.open('GET', 'http://www.mozilla.org/', true); req.onreadystatechange = function (aEvt) { if (req.readyState == 4) { if(req.status == 200) { window.location = "myspecialurl:foo" } } };
In your native code, you'll need to implement a
UIWebView
delegate that listens for this custom URL:- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if([[[request URL] absoluteString] isEqualToString:@"myspecialurl:foo"]) { // Your code for when the AJAX request completes. return NO; } return YES; }
No assurances this code parses/compiles but should give you the idea how to do it.