UIWebViewベースのアプリにNSURLProtocolを登録し、file
スキーム要求に応答するように設定しました。
Webビューでは、画像、CSS、JSなどをロードしますが、これらはすべて正常に機能しています。HTMLツリーのルートディレクトリにないCSSファイルの画像を参照しようとすると問題が発生します。例えば
<html>
<head>
<style type="text/css">
.1 { background-image: url("1.png"); }
</style>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<!-- contents of css/style.css might be:
.2 { background-image: url("../2.png"); }
-->
</head>
<body>
<div class="1">properly styled</div>
<div class="2">not styled</div>
</body>
</head>
NSURLProtocolに到着するリクエストを見ると、ソースツリーのどこにリクエストファイルがあるかを判断する方法がわかりません。
たとえば、上記のHTMLがというファイルにある場合source/index.html
、NSURLProtocolサブクラスはファイル../2.png
からのリクエストを取得しsource/css/style.css
ます。
これはに解決されるはずですが、パスにsource/2.png
そのサブディレクトリが含まれている必要があるかどうかはわかりません。css
リクエストのソースについてより多くのコンテキストを取得して、リクエストされたファイルを探すときにパスを修正する方法はありますか?