ios - LoadFileUrl 和 LoadHtmlString 未加载本地文档资源
问题描述
基本上使用使用 WKWebview 的 HybridWebView 我正在加载一个 html 文件,其中包含存储在应用程序文档目录中的一堆 css 文件。例子
var/mobile/Containers/Data/Application/C9D9BB56-79B6-4990-A599-18C6AD928A22/Documents
我可以使用 LoadFileUrl 或 LoadHTMLString 很好地加载 html,问题是引用的 css 和 js 没有加载到 webview
这是我的文件网址
file:///var/mobile/Containers/Data/Application/C9D9BB56-79B6-4990-A599-18C6AD928A22/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH3EPJNTG6M4T2BQDI/Unit_4_5/995/Unit.html
基本网址
file:///var/mobile/Containers/Data/Application/C9D9BB56-79B6-4990-A599-18C6AD928A22/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH3EPJNTG6M4T2BQDI/Unit_4_5/995/
这是从 Safari 中的网络检查器抓取的未加载资源的路径示例。
file:///var/mobile/Containers/Data/Application/C9D9BB56-79B6-4990-A599-18C6AD928A22/Documents/Courses/2d7d0a7d-145a-41d0-9abf-685a2b5dfc3c/Online_Placement_Test_no_timer_pack/YKZOP4NACH3EPJNTG6M4T2BQDI/Unit_4_5/995/js/bootstrap.min.js
不知道我在这里做错了什么。我什至设置了
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
在 info.plist
解决方案
在 iOS13 的 Objective-C 中使用 WebKit WKWebView 从文件系统的应用程序的缓存目录中加载本地存储的网站或 html 文件
注意非常重要的 webView.configuration.preferences 设置 allowFileAccessFromFileURLs!!
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *docsDir = [paths objectAtIndex:0];
NSString *downloadDir = [[NSString alloc] initWithFormat:@"%@/%@", docsDir, @"www"];
NSURL* downloadDirUrl = [[NSURL alloc] initFileURLWithPath:downloadDir];
NSLog(@"DIR '%@'", downloadDirUrl);
NSURL* indexHtmlUrl = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"%@/%@", downloadDir, @"/index.html?param=val"]];
NSLog(@"HTML '%@'", indexHtmlUrl);
WKWebView* webView = ...;
[webView.configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
[webView loadFileURL:indexHtmlUrl allowingReadAccessToURL:downloadDirUrl];
推荐阅读
- angular - 使用 ngxs 更改属性的值
- javascript - 正确发送后如何重置 JSON?
- interface - 与石墨烯后端反应阿波罗中 graphql 接口类型的常见字段
- excel - 复制粘贴循环 vba - 覆盖当前单元格
- python - 在循环中为多个输入创建元音变量
- python - 迭代工具 Python
- python - 熊猫连接上一个当前和下一个文本
- python - 如何在 FiPy 中编写具有自变量的方程项?
- r - 使用 R veriosn 3.6.1 以 csv 格式导入数字数据的问题
- android - 在 Android\Sdk 中找不到带有哈希字符串“android-28”的目标