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 ページのコードに渡したい場合は、ローカル 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 に答える