使用 WKWebView 时,localStorage 未保存在 iFrame 中
Posted
技术标签:
【中文标题】使用 WKWebView 时,localStorage 未保存在 iFrame 中【英文标题】:localStorage not saving inside iFrame when using WKWebView 【发布时间】:2021-06-24 18:35:54 【问题描述】:在 WKWebView 中使用时,我对这个 iFrame 问题摸不着头脑,因为没有任何 localStorage 更改持续存在。虽然这些值似乎在应用程序仍在运行时被保存,但一旦应用程序终止,iFrame 页面中的所有 localStorage 值都会被清除。
这是我的标准网页视图代码
override func viewDidLoad()
super.viewDidLoad()
guard let url = URL(string: "https://example.com") else
return
webView.configuration.preferences.javascriptEnabled = true
view.addSubview(webView)
webView.load(URLRequest(url: url))
https://example.com 返回一个包含 iFrame 的页面,该 iFrame 引用 https://example.com 中的子页面。
我已经尝试在 iFrame 标签中添加 sandbox="allow-same-origin" 但无济于事。
可以使用一些想法来了解如何使其正常工作。提前致谢。
【问题讨论】:
当页面不在 iFrame 中时,localStorage 在应用程序关闭之间工作得非常好。我刚刚在 Chome 进行了测试,一切正常。 Safari 不走运。 【参考方案1】:通过使父框架和子框架来自同一域来对问题进行排序。
例如:如果页面在 https://mysite.example.com 加载,则 iFrame 不能指向 https://exmaple.com/mypage.html,这正是我看到问题时的设置。
【讨论】:
以上是关于使用 WKWebView 时,localStorage 未保存在 iFrame 中的主要内容,如果未能解决你的问题,请参考以下文章
播放音频 WKWebView 时如何使用 MPNowPlayingInfoCenter 显示播放信息?