WKWebView拦截本地文件请求

时间:2020-03-10 09:05:10

标签: ios swift local wkwebview wknavigationdelegate

我的iOS 11+应用程序中有一个WKWebView,需要从本地内存HTML中加载自定义HTML。我可以使用工作正常的webView.loadHTMLStringwebview.load(data)来完成此操作。

此HTML引用了一些必需的.js / .css / .png文件。对于普通的Web URL请求,WKWebView会即时执行此操作,并加载丢失的文件。但是在这种情况下,我需要拦截这些请求并提供文件内容,因为其中一些需要动态生成。因此,我需要提供的.css文件等实际上并未作为本地文件出现。

我认为这只是实现decidePolicyFor协议的WKNavigationDelegate方法的问题,但是由于某种原因,本地子请求没有触发此问题,那么我该怎么做呢?

我还尝试将HTML保存为本地临时文件,并使用webView.load(URLRequest)加载它,但这也不会触发委托。如果它是一个Web URL,则可以正常触发。

1 个答案:

答案 0 :(得分:0)

比方说,您渲染fullIosAppPath/page.html,其文本类似于<img src="folder/1.png">
在这种情况下,您需要在应用程序的文件夹中拥有文件fullIosAppPath/folder/1.pngWKWebView将在没有任何拦截的情况下加载1.png-它只会渲染图像。

因此,您可以在呈现HTML文件之前先对其进行解析,然后生成/加载诸如1.png之类的require资源。 您可以使用Kanna之类的框架来解析HTML文件,也可以自己编写一些简单的解析器。