在 WKWebview 中使用本地资源

Posted

技术标签:

【中文标题】在 WKWebview 中使用本地资源【英文标题】:Use local resources in WKWebview 【发布时间】:2015-06-10 02:58:38 【问题描述】:

如何让 WKWebview 使用本地 .js、.css 和/或本地图像文件来代替远程文件,以加快网页加载速度。 另外,我注意到在实现 WKNavigationDelegate 方法时不会调用 NSURLProtocol 方法(通过注册类实现时),知道为什么吗?

【问题讨论】:

【参考方案1】:

ios 9 API 中有一种加载本地资源的新方法

/*! @abstract 导航到文件系统上请求的文件 URL。 @param URL 要导航到的文件 URL。 @param readAccessURL 允许读取访问的 URL。 @discussion 如果 readAccessURL 引用单个文件,则 WebKit 只能加载该文件。 如果 readAccessURL 引用了一个目录,那么 WebKit 可能会加载该文件中的文件。 @result 给定文件 URL 的新导航。 */

@available(iOS 9.0, *)
func loadFileURL(URL: NSURL, allowingReadAccessToURL readAccessURL: NSURL) -> WKNavigation?

【讨论】:

感谢您的调查。根据要求,我需要在 ios7 和 8 中工作的解决方案:( 问题是关于使用缓存的 css/jss 资产来加速远程网站的导航。这个答案是关于导航到设备上的本地网页。【参考方案2】:

阅读大量文档后,我意识到/了解到如果使用 WKWebviews,我将无法跟踪 URL。我现在不得不求助于 UIWebView。

【讨论】:

为什么您认为您无法使用 WKWebView 跟踪 URL?看看WKNavigationDelegate

以上是关于在 WKWebview 中使用本地资源的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS WKWebView 中保留“Referer”标头?

在 WKwebView (SWIFT) 中加载本地资源以及 HTML 字符串?

WKWebView 无法在 HTML 中加载本地资源

使用 evaluateJavascript 方法在 Cordova 的 WKWebview 上设置本地图像

使WKWebView在后台保持不变,同时显示另一个视图

Swift 3 WKWebView 'URLRequest';您的意思是使用“as”来显式转换吗? ( 漏洞 )