【发布时间】:2010-04-25 11:03:39
【问题描述】:
我正在尝试将方法调用从 JavaScript 发送到 Objective-C,反之亦然。一切都适用于 window.location 触发的 url,它们被 shouldStartLoadWithRequest 捕获。现在,如果我尝试改用 AJAX 调用,则不会调用 shouldStartLoadWithRequest。 有没有办法做到这一点?主要是我不想被限制在可以从 JavaScript 传递到 Objective-C 的数据的最大 URL 大小。
我的 UIWebViewDelegate 实现:
- (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;
}
}
我的 JavaScript 调用:
// 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();
【问题讨论】:
标签: iphone-sdk-3.0 iphone