WKWebView перехватывает запросы локальных файлов - PullRequest
0 голосов
/ 10 марта 2020

У меня есть WKWebView в моем приложении iOS 11+, где мне нужно загрузить пользовательский HTML из локальной памяти HTML. Я могу выполнить sh, используя webView.loadHTMLString или webview.load(data), который работает нормально.

Этот HTML ссылается на некоторые необходимые файлы .js / .css / .png. Для обычных запросов веб-URL WKWebView просто сделает это на лету, загружая отсутствующие файлы. Но в этом случае мне нужно перехватить эти запросы и предоставить содержимое файла, так как некоторые из них должны генерироваться динамически. Так что. css файлы и c. Мне нужно, чтобы физически не присутствовали в качестве локальных файлов.

Я думал, что это будет просто вопрос реализации decidePolicyFor методов протокола WKNavigationDelegate, но по какой-то причине это не срабатывает для локальных подзапросы, так как я могу выполнить sh this?

Я также попытался сохранить HTML как локальный временный файл и загрузить его, используя webView.load(URLRequest), но это также не вызывает делегат. Если это был веб-URL, он срабатывает нормально.

1 Ответ

0 голосов
/ 20 марта 2020

Допустим, вы визуализируете fullIosAppPath/page.html с текстом типа <img src="folder/1.png">.
В этом случае вам нужно иметь файл fullIosAppPath/folder/1.png в папке вашего приложения. WKWebView загрузит 1.png без какого-либо перехвата - он просто отобразит изображение.

Таким образом, вы можете проанализировать файл HTML перед его рендерингом и сгенерировать / загрузить требуемые ресурсы, такие как 1.png , Вы можете проанализировать файл HTML с такими фреймворками, как Kanna , или написать какой-нибудь простой анализатор самостоятельно.

...