WKWebView缓存清单不工作IOS8

WKWebView缓存清单不工作IOS8,ios8,wkwebview,Ios8,Wkwebview,缓存清单工作正常,在IOS 8的safari中触发事件。根本无法在WKWebView中工作其他人是否可以解决此问题 导入UIKit 导入WebKit class ViewController: UIViewController { @IBOutlet var containterView : UIView! = nil var webView : WKWebView? override func loadView(){ super.loadView() self.webView

缓存清单工作正常,在IOS 8的safari中触发事件。根本无法在WKWebView中工作其他人是否可以解决此问题

导入UIKit

导入WebKit

class ViewController: UIViewController {
@IBOutlet var containterView : UIView! = nil
var webView : WKWebView?
override func loadView(){
    super.loadView()
    self.webView = WKWebView()
    self.view = self.webView!
}
override func viewDidLoad() {
    super.viewDidLoad()
    var url = NSURL(string:"http://html5demos.com/offlineapp")
    var req = NSURLRequest(URL:url)
    self.webView!.loadRequest(req)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
}

如果我使用html5test.com,应用程序缓存将恢复为受支持

编辑:

从WKWebView加载时,window.applicationCache也不会返回undefined

console.log("Initializing Page");       
if (window.applicationCache == undefined){
    console.log("Application cache not suported!");
    updateSplash();
}
console.log(window.applicationCache); returns: DOMApplicationCache
编辑2:

if (typeof window.applicationCache.update === 'function'){
        console.log("Application has method update");
        console.log(window.applicationCache.update); //shows swapCache() and update() methods
        window.applicationCache.update();   
    }

window.applicationCAche.update()抛出错误:InvalidStateError:DOM异常11:试图使用不可用或不再可用的对象。

我认为您正在尝试解决与我相同的问题。我就是这么做的

  • 将web应用程序的起始页保存到一个HTML文件(index.HTML)中,嵌入所有内容(CSS、JS、以64为底的图像、图标字体)。并将该文件添加到您的Xcode项目中
  • 通过读取HTML文件的内容启动应用程序,并将其加载到WKWebView中。您可以将基本url设置为您应该从中开始的相同url。这样,就好像web应用程序在您的网站上打开一样 这样做的好处是,即使用户的网络不好,你的应用程序也会一直启动。这是我使用的SWIFT代码,由Matt Neuberg()提供。如果你想要完整的源代码,请告诉我,我会把它发布在Github上

        let templatepath = NSBundle.mainBundle().pathForResource("index", ofType: "html")!
        let base = NSURL(string:"http://m.ftchinese.com/iphone-2014.html#iOSShare")
        var s = NSString(contentsOfFile:templatepath, encoding:NSUTF8StringEncoding, error:nil)!
        self.webView!.loadHTMLString(s, baseURL:base)
    

    为了记录在案,这个问题似乎是在网上提出的,并从网上链接到网上。苹果的官方回应是,WKWebView中没有HTML5应用程序缓存功能:

    WKWebView中未启用脱机应用程序缓存。请随时请求通过提供


    我不明白为什么有人会投反对票。ApplicationCache是一个主要功能,不能与WKWebView一起使用它是一个很大的倒退。这让我非常头疼。为什么它们支持本地存储而不是缓存清单?关于如何使用本机功能来解决这个问题,有什么想法吗?看起来我必须在设备上存储所有的html/css/js/图像…为什么是苹果为什么!这与提出的问题无关。他们希望使用HTML 5应用程序缓存,WKWebView()中似乎不支持该缓存。我们可以使用私有API解决此问题。这种方法的一个缺点是…我们不能使用appstore版本的应用程序…如果其企业应用程序我们可以使用它。以下是我无法访问该论坛帖子的解决方案,但发现2016年8月的一份新报告基本上说了同样的话。