内部URL带有片段标识符

4

我有一个大的 .htm 文件在主包中,我希望将其加载到 webview 中。没有问题,直到我在 URL 的末尾添加了一个片段 id。我希望在按下按钮时,webview 打开一个锚点 id #c

顺便说一句:如果我创建一个 URL http://www.mydomain.com/database.htm#c 并从互联网加载它。一切都很好。

我尝试了几种方法。两者都失败了。我猜测服务器端在互联网上对 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];   

或者

 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个回答

3

看起来这可能是NSURL对“#”字符进行转义的问题: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];

0

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


抱歉,那是之前尝试的遗留物。这两个%s也不起作用。同时我发现通过使用WebKit框架,我可以滚动到我想要的HTML部分。 DOMDocument *doc = [[spinner2 mainframe] DOMDocument]; DomElement *element = [doc getElementById:@"#c"]; [element scrollIntoView:YES]; 我正在努力让声明正确格式化。感谢您的帮助。 - tkelly2000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接