繁体   English   中英

WKWebView:从iOS中的documents文件夹加载内容

[英]WKWebView:Load contents from documents folder in iOS

在我的应用程序中,我将index.html作为资源包的一部分,它充当模板。 它有通往不同资源的道路。 我将其加载到WKWebview中,当该应用程序在线时,一切正常,从Web加载所有资源,页面完美。

在离线情况下,我会将这些资源下载到应用程序中的documents文件夹中,并将在线路径替换为Index.html中的离线路径,例如

    <image src = "file:///Users/an/Library/Developer/..../Library/Caches/MYApp/Icon.png">
   <a href="file:///Users/an/Library/Developer/..../Library/Caches/MYApp/Data.html">

但是Index.html无法加载它。 我尝试使用wkWebView.load(URLRequest(url: URL(string: "file:///Users/an/Library/Developer/..../Library/Caches/MYApp/Data.html")!)) ,它可以工作,但是当我尝试通过Index.html加载它时,它就停止工作了。

大多数人都说要拥有像GCDWebServer这样的Web服务器,这是唯一的方法吗? 如果我使用它,这个问题会解决吗?

您是否正在要求操作系统提供下载文件的位置? 目标目录可能会更改,而不会通知您,如果您使用硬编码位置,则目录结构更改后将不会成功。 您应该获得一个指向用户的可写缓存文件夹的URL,如下所示:

let userCachesDirectoryURL =  FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)[0]

一旦有了它,就可以将文件名(而不是整个路径)附加到该URL。 我只是在其中一个程序中打印出该行的结果,并看到我的应用程序正在使用几个文件夹。

试试看,如果您仍然遇到问题,请告诉我。 我可以编写示例代码...(有空时)。

我的要求是在运行时使用Java脚本从文档或缓存文件夹加载/更改Index.html中的资源。 我根本不对路径进行硬编码,而我当然使用文件管理器 )。 这样做时,我无法使用file://协议访问资源。 今天,我尝试了一个示例应用程序来演示我的问题,然后突然开始工作:)。 现在,我需要访问我的主要项目,看看出了什么问题。

在此示例项目中,我试图通过传递来自caches文件夹的路径来在运行时更改图像的src。

WKWebViewAccessDocuments

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM