1

我正在使用以下内容将 HTML 文件加载到我的 Mac OSX 应用程序中的 WebView 中:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"html"];
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];
[[WebView mainFrame] loadRequest:request];

这很好用......但我需要做的是读取同一个文件,并附加一些 URL 参数(比如foo.html?var=bar),然后一些 JavaScript 将使用这些参数进行输出。我尝试URLByAppendingPathExtension:在 fileURL 上使用,但没有骰子...

4

2 回答 2

2

问题是使用该fileURLWithPath:方法创建的 URL 不支持查询字符串,因为通常查询字符串对于引用磁盘上文件的 URL 没有意义。

http://如果您想将 URL 参数传递给网页中的代码,我强烈建议您运行本地 Web 服务器并使用方案 URL。在我看来,依赖 URL上的WebView支持查询字符串是脆弱的。file://

也就是说,您可以使用这样的URLWithString:方法构造 URL,它会起作用:

NSURL* fileURL = [NSURL URLWithString:@"file://localhost/Users/you/Desktop/foo.html?bar=foobar"];

在您的情况下,您可能会执行以下操作:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"html"];
NSString* URLString = [NSString stringWithFormat:@"file://localhost%@?var=%@", filePath, @"bar"];
NSURL* fileURL = [NSURL URLWithString:URLString];
于 2012-04-24T23:06:46.287 回答
0
NSString *filePath = ...
filePath = [filePath stringByAppendingFormat:@"?var=%@", @"bar"];
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
...
于 2012-04-24T18:26:24.907 回答