Ich versuche, Methodenaufrufe von JavaScript an Objective-C und umgekehrt zu senden. Alles funktioniert gut für window.location ausgelöste URLs, die von shouldStartLoadWithRequest abgefangen werden. Wenn ich stattdessen versuche, einen AJAX-Aufruf zu verwenden, wird sustainStartLoadWithRequest nicht aufgerufen. Gibt es eine Möglichkeit, dies zu tun? Hauptsächlich möchte ich nicht auf die maximale URL-Größe von Daten beschränkt sein, die von JavaScript an Objective-C übergeben werden können.shouldStartLoadWithRequest wird nicht aufgerufen, wenn AJAX/XMLHttpRequest verwendet
Mein UIWebViewDelegate implementiert:
- (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;
}
}
Mein JavaScript-Aufrufe:
// 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();