The*_*Gwa 22 cookies safari ios iphone-standalone-web-app ios7
对于iOS 6. [某事]以后全屏Web应用程序的Cookie,SQLite数据和localStorage数据与Safari数据分开存储.我有一个令牌,我需要在保存到主屏幕时持久保存到主屏幕应用程序.
有没有人找到这个问题的优雅解决方案?非常难看的解决方案也将被考虑:)
Bru*_*Dev 43
由于iOS 5 Apple在Safari浏览器和现在被认为是沙盒应用程序之间共享数据方面越来越孤立,因此Home Screen书签越来越孤立.
在撰写本文时(iOS 7.1测试版),您只有一个选项.
加载页面时,使用JavaScript(window.location.search)将令牌/数据添加到URL中的查询字符串参数.当用户将站点保存到其主屏幕时,URL将用作密钥.如果您检测到您处于主屏幕模式(window.standalone),您的JavaScript可以轻松提取您之前潜入的查询字符串参数.这应该永远有效,除了URL中的值也将永远存在.
另一个技巧是"渲染"您想要携带到DOM中的主屏幕的任何值.从iOS的早期版本开始,将其保存到主屏幕时呈现的HTML将保持不变.启动主屏幕Web应用程序时,它不会从URL请求内容.它只是加载以前保存的HTML而没有初始Web请求(将请求HTML中的所有链接到CSS和JS,而不是页面本身).知道HTML永远保存,你也可以在其中保存任何内容.更新页面的唯一方法是,windows.reload如果您没有通过AJAX提取内容,请执行或等效的重定向.简而言之,例如,将您的价值注入隐藏的输入字段,并将其传输.
选项#1可能会永远持续下去,主屏幕不太可能以任何方式改变URL.只要确保你有一些JS来翻转开关并重新加载页面,如果你想要摆脱它.
选项#2有点冒险,因为有一天,所有知道Apple的人都可以决定实际应该创建初始页面请求,而不是在保存时使用相同的HTML.然后,这将消除您拥有的数据以及DOM中任何元素的当前状态.
更新:DOM注入技术不再有效(iOS 7+),只有从服务器直接下载的DOM才会保存到主屏幕.运行期间所做的任何动态更改都将丢失.淘汰选项#2,因为问题是适用于iOS 7而且它的工作时间更长,只留下选项#1,在URL中添加一些内容,这些内容将始终保存到主屏幕.
| 归档时间: |
|
| 查看次数: |
8044 次 |
| 最近记录: |