我有一个ipad应用程序,其中大部分功能都是Web应用程序。 UI只是三个加载页面的UIWebView。拦截了每个被点击的链接,我在URL中有一个名为“iPadTarget”的请求变量。
EX:http://www.somedomain.com/blah.asp?iPadTarget=2
上面的代码将在第二个webview中打开,因为iPadTarget = 2。
以下是完成此操作的代码:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = [request URL];
//Extract the value from request variable 'iPadTarget' in url string.
NSString *test = [url query];
int index = [test rangeOfString:@"iPadTarget="].location;
int target = index + 11;
char c = [test characterAtIndex:target];
NSLog(@"%c",c);
if (navigationType == UIWebViewNavigationTypeLinkClicked || navigationType == UIWebViewNavigationTypeFormSubmitted || navigationType == UIWebViewNavigationTypeOther) {
if (c == '1') {
[viewOne loadRequest:request];
return NO;
} else if (c == '2') {
[viewTwo loadRequest:request];
return NO;
} else if (c == '3') {
[viewThree loadRequest:request];
return NO;
}
}
return YES;
}
我的问题是:我在一个按钮中有一个onclick事件的表单:
<button onclick='window.open("someotherpage.asp?iPadTarget=2");window.open("someotherpage.asp?iPadTarget=3");'>Button</button>
该代码应该在第二个和第三个UIWebView中打开相同的页面。但是,它什么也没做,当我查看控制台输出时,它无限地打印char c。
很抱歉这个冗长的问题,我将不胜感激!
答案 0 :(得分:0)
您确定这只是第一个UIWebView
的代表吗?
无论您做什么,都要包含更详细的日志记录。即。
NSLog(@"request for webview %x, url=%@", ... );
以及
NSLog(@"returning NO because ...");
找到循环的原因。