objective-c - 将带有 URL 参数的 HTML 文件加载到 Cocoa(不是 iPhone)WebView 中

标签 objective-c macos cocoa url webview

我使用以下命令将 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 将读取该文件用于输出。我尝试在 fileURL 上使用 URLByAppendingPathExtension:,但没有骰子...

最佳答案

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

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

也就是说,您可以使用 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];

关于objective-c - 将带有 URL 参数的 HTML 文件加载到 Cocoa(不是 iPhone)WebView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303010/

相关文章:

iphone - 无论对象是从 nib 加载还是以编程方式创建,执行初始化代码的正确方法是什么?

linux - 如何熟练使用终端?

cocoa - 权利 key 中缺少 com.apple.security.files.bookmarks.app-scope?

c - 生成给定概率的总体伪样本

cocoa - Xcode 4.4 删除了开发者工具中的 Icon Composer

objective-c - 在 Cocoa 中动态获取硬盘大小

ios - NSMutableArray 数据按距离排序

ios - 我如何在 IOS 中使用 HTML.fromhtml?

sql-server - 如何将 REST 调用中的数据导入到 MAC 上的 SQLite 数据库中?

python - 将表数据从一个数据库复制到另一个数据库