带有片段ID的内部URL

时间:2011-04-29 17:07:16

标签: ipad webview fragment-identifier

我希望将主要包中的大.htm个文件加载到webview中。在我将片段ID附加到URL的末尾之前没问题。我希望webview在按下按钮时以锚ID #c打开。

BTW:如果我创建了一个URL http://www.mydomain.com/database.htm#c并从Internet加载它。一切都很好。

我尝试了几种方法。两者都失败了。我猜服务器端在互联网上解析URL,但iPhone没有这种能力。有没有人有建议?如果可能,请明确说明。我是一个菜鸟,我自己。

难倒

 NSString *path         = [[NSBundle mainBundle] pathForResource:@"database1.htm" ofType:nil];
 NSString *pathWithFrag = [NSString stringWithFormat:@"%@%@%",path, @"#c"];
 NSURL *baseURL         = [ NSURL fileURLWithPath:pathWithFrag];
 [spinner2 loadRequest:[NSURLRequest requestWithURL:baseURL]];
 [super viewDidLoad];   

OR

 NSString *path  = [[NSBundle mainBundle] pathForResource:@"database1.htm" ofType:nil];
 NSURL *baseURL  = [ NSURL fileURLWithPath:path];
 NSURL *newURL   = [baseURL URLByAppendingPathComponent:@"#c"];
 [spinner2 loadRequest:[NSURLRequest requestWithURL:newURL]];
 [super viewDidLoad];

2 个答案:

答案 0 :(得分:3)

看起来这可能是NSURL url转义为“#”字符的问题:http://9mmedia.com/blog/?p=299

按照该博客文章中的方法,这样的事情可能会起作用:

NSString *path = [[NSBundle mainBundle] pathForResource:@"database1.htm" ofType:nil];
NSURL *baseURL = [NSURL fileURLWithPath:path];
NSURL *fullURL = [NSURL URLWithString:@"#c" relativeToURL:baseURL];
[spinner2 loadRequest:[NSURLRequest requestWithURL:fullURL]];
[super viewDidLoad];

答案 1 :(得分:0)

%格式的额外pathWithFrag可能会导致问题:尝试@"%@%@",而不是@"%@%@%"