J'essaie d'envoyer des invocations de méthodes de JavaScript à Objective-C et vice versa. Tout fonctionne correctement pour les URL déclenchées par window.location, qui sont interceptées par shouldStartLoadWithRequest. Maintenant, si j'essaie d'utiliser un appel AJAX à la place, shouldStartLoadWithRequest n'est pas appelé. Existe-t-il un moyen de le faire? Principalement je ne veux pas être limité à la taille d'URL maximale sur les données qui peuvent être transmises de JavaScript à Objective-C.shouldStartLoadWithRequest n'est pas appelé lors de l'utilisation de AJAX/XMLHttpRequest
Mon UIWebViewDelegate met en œuvre:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *url = [[request URL] absoluteString];
NSRange urlrange = [url rangeOfString:@"myScheme://"];
if(urlrange.length > 0){
NSLog(@"this is an objective-c call, do not load link: %@", [url substringWithRange:NSMakeRange(urlrange.location, [url length])]);
return NO;
} else {
NSLog(@"not an objective-c call, load link: ", url);
return YES;
}
}
Mon JavaScript appelle:
// works
window.location.href = "myScheme://readyHref";
// fails
var xmlHttpReq = false;
if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttpReq.open('GET', "myScheme://readyAJAX", false);
xmlHttpReq.send();