有没有一种方法可以在WKWebView中设置本地存储 [英] Is there a way to set local storage in WKWebView
问题描述
我想在向WKWebView
发出请求之前设置本地存储,在任何iOS版本中都可以吗?
I want to set local storage before making request to WKWebView
is that possible in any iOS version?
找不到解决方法,似乎唯一相关的类是WKWebsiteDataStore
https://developer.apple.com/documentation/webkit/wkwebsitedatastore ,仅具有读取和删除方法.
Can't find a way to do it, the only class seem to relevant is WKWebsiteDataStore
https://developer.apple.com/documentation/webkit/wkwebsitedatastore which only have method to read and delete.
推荐答案
在@paulvs的评论中,这就是我的工作.
From @paulvs comment here is what I do.
设置导航委托以侦听已完成的回调.
Set navigation delegate to listen to finished callback.
webView.navigationDelegate = self
然后在回调中,检查localStorage中的值并根据需要进行设置.
Then in the callback, check for value in localStorage and set if needed.
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("localStorage.getItem(\"key\")") { (result, error) in
// check if result is what I want
// if it is what I want, do nothing
// if not set it
webView.evaluateJavaScript("localStorage.setItem(\"key\", \"value\")") { (result, error) in
webView.reload()
}
}
}
这篇关于有没有一种方法可以在WKWebView中设置本地存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!