有没有一种方法可以在WKWebView中设置本地存储 [英] Is there a way to set local storage in WKWebView

查看:983
本文介绍了有没有一种方法可以在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆