0

だから私はWebKitのWebViewとWebFrameを使っています。カスタムNSURLProtocolを使用して、データベースから各リクエストのHTMLを取得します。問題は、HTML内のリンクがすべて相対的であるという事実から生じますが、実際には絶対的である必要があります。たとえば、ページ

foo/bar.html

を指すリンクが含まれている可能性があります

foo/baz.html

問題は、リンクが相対的であるため、リクエストが

/foo/foo/baz.html

これまでのところ、2つのURLを比較し、共通のプレフィックス(この場合は「foo /」)を削除して、foo/baz.htmlを残してこれを回避しようとしました。ただし、これはすべての可能性に対して機能するわけではありません。特に、パスに複数のディレクトリがある場合はそうです。これは、WebViewのframeLoadDelegateの「didStartProvisionalLoadForFrame:」メソッドで行います。

残念ながら、表示しているHTMLを制御できないため、リンク自体を変更することはできません。

4

1 に答える 1

0

メインフレームのリソースロードデリゲートになり、webView:resource:willSendRequest:redirectResponse:fromDataSource:要求されているURLを変更するように実装してみてください。リクエストのURLに送信relativeStringして元の相対URLを取得してから、を使用-[NSURL initWithString:baseURL:]して、正しいベースURLに対して同じ相対文字列を使用して新しいURLを作成します。

于 2009-08-14T04:53:55.310 に答える