這裏使用第二個解決方案:Call Objective C method from JavaScript with parameter,我已經添加了以下行我的一些JavaScript代碼,以便回傳給了一些資料到的Objective-C:iPhone:避免JavaScript重定向
location.href = 'myApp://index=10';
的問題是,當我這樣做時,頁面上其餘的JavaScript(在location.href = ...行之後)不會執行,並且瀏覽器被重定向到空白頁面。有沒有什麼辦法可以在瀏覽器沒有進入空白頁面的情況下執行該行?
我很感激任何幫助,請讓我知道,如果我可以澄清。謝謝。
編輯: Objective-C代碼:
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL] ;
NSString *url2 = [[request URL] absoluteString];
static NSString *urlPrefix = @"myApp://";
if ([url2 hasPrefix:urlPrefix]) {
NSString *paramsString = [url2 substringFromIndex:[urlPrefix length]];
NSArray *paramsArray = [paramsString componentsSeparatedByString:@"&"];
int paramsAmount = [paramsArray count];
for (int i = 0; i < paramsAmount; i++) {
NSArray *keyValuePair = [[paramsArray objectAtIndex:i] componentsSeparatedByString:@"="];
NSString *key = [keyValuePair objectAtIndex:0];
NSString *value = nil;
if ([keyValuePair count] > 1) {
value = [keyValuePair objectAtIndex:1];
}
if (key && [key length] > 0) {
if (value && [value length] > 0) {
if ([key isEqualToString:@"index"]) {
NSLog(@"Works");
exit;
}
}
}
}
return NO;
}
if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) {
return YES;
}
else {
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}
}
感謝您的回覆,但不幸的是問題仍然存在。 – Objc55 2012-01-30 20:04:22
檢查嘗試2 ... – 2012-01-30 20:10:26
我相信我確實返回了NO,但是我已將我的代碼添加到了我的初始文章中,以防萬一我的操作不正確?謝謝。 – Objc55 2012-01-30 20:17:41