出错案例
本地沙盒有多个HTML文件及资源,使用loadFileURL方法轮流加载HTML文件,第一次加载正常,第二次加载出错。并且报错Error Domain=kCFErrorDomainCFNetwork Code=1
这个错误只在真机上会出现,模拟器上可以正常的加载第二个第三个等HTML文件。
原因
http://www.openradar.me/45346962
https://stackoverflow.com/questions/40472796/wkwebview-loadfileurl-works-only-once
通过查询得出原因可能是出在loadFileURL这个方法第二个参数readAccess上。
- (nullable WKNavigation *)loadFileURL:(NSURL *)URL allowingReadAccessToURL:(NSURL *)readAccessURL API_AVAILABLE(macosx(10.11), ios(9.0));
这个参数传HTML需要访问的资源路径。我在传参的时候,加载哪个HTML文件,就传哪个HTML的资源文件路径。但是WKWebview会锁定第一次传的资源路径,之后再传都会不起作用。这就导致我加载第二个HTML文件的时候找不到资源文件而报错。
解决方案
把所有本地HTML文件放在同一文件夹下,readAccessURL传所有HTML文件的资源路径。
沙盒路径
如图,51、52、53等文件夹里都是一个独立的网页和资源,readAccessURL应该传unzip文件夹的路径,而不是51文件夹的路径。
网友评论