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?
Ishan
You'll need to do two things:
In your JavaScript code, have the
XMLHTTPRequestsignal 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
UIWebViewdelegate 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.
来源:https://stackoverflow.com/questions/4179445/knowing-when-ajax-has-loaded-in-uiwebview