html - WebView 插入本 map 片到html 无法成功?

标签 html ios swift wkwebview

我的 ViewController 中有一个 WkWebView,我使用 webview 加载本地 html。代码是这样的:

guard let path = Bundle.main.url(forResource: "editor", withExtension: "html") else {
        return
    }
webView.load(URLRequest(url: path))

1: 我从 photoLibrary 中选择一张图片,然后将其保存到文档的目录中。

private func fileName() -> String {
    let date = Date()
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd@HH-mm-ss"
    return "/" + formatter.string(from: date) + ".png"
}

func saveImage(_ image: UIImage) {
    guard let imageData = UIImageJPEGRepresentation(image, 1.0) else {
        return
    }
    let directory = NSHomeDirectory().appending("/Documents")
    let path = directory.appending(fileName())
    let fileManager = FileManager.default
    do {
        try fileManager.createDirectory(atPath: directory, withIntermediateDirectories: true, attributes: nil)
        fileManager.createFile(atPath: path, contents: imageData, attributes: nil)
    } catch {
        SHLog("saveImage: \(error)")
    }
}

2:获取图片路径,然后使用webView的方法插入图片。

func evaluateJs(_ imagePath: String) {
    webView.evaluateJavaScript("insertImage('\(imagePath)')") { (response, error) in
    }
}

insertImage()是从本地js文件中获取的方法,可以将图片插入到html中。

如果我使用本地 imagePath,我无法将图像插入到 html 中。但是当我使用真实的 url 时,它可以工作。我不知道原因,任何人都可以帮助我。谢谢。

最佳答案

您的问题可能是由 WKWebViews 安全策略不允许您访问应用程序的本地文件夹引起的。

查看 WKWebView loadFileURL 的文档.您应该能够在 allowingReadAccessTo 参数中传递文档目录或完整图像 URL,这样您就可以访问所需的图像。

如果您有图片的网址,我宁愿使用网址,也不愿尝试在本地存储和加载图片。您不会用完文档目录中的存储空间,WKWebView 旨在从网络加载内容。

关于html - WebView 插入本 map 片到html 无法成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46058786/

相关文章:

ios - 展开 UITableView 单元格文本

swift - 快速将枚举转换为 NSNumber

ios - Realm Swift - 复制现有的嵌套对象

javascript - jQuery - 文本描述悬停

html - Bootstrap float 图像、文本和标题

iphone - UITableView 无法一直滚动到底部

ios - 如何让 Swift 中的 TableView 不那么滞后?

javascript - 根据用户的浏览器调整屏幕大小

javascript - 不能在 title 属性中使用 HTML 实体吗?

ios - 看不到属性错误