我需要在浏览器的不同标签(同一个应用程序)之间共享Cookie
值。我一起工作,发现其他选项卡只能使用cookie,如果第二个选项卡刷新,则由第一个选项卡设置。但在我的情况下,我不能提供令人耳目一新的标签(& i不能使用会话)。有没有办法以其他方式共享cookie? (即,在一个选项卡上设置cookie,另一个选项卡可以使用它,而无需刷新)
SO的另一篇文章说one must continuesly poll cookie, in order to share
。但我无法理解poll
的含义。在我的情况下,民意调查这件事有用吗?
答案 0 :(得分:1)
轮询将检查服务器或其他后端服务以查看是否有新的cookie。
因此,选项卡1会创建一个cookie,并通知服务器新的cookie。标签2"民意调查"服务器,即通过常规的ajax请求,您可以在选项卡2上设置cookie。
这也可以通过webstorage完成我相信同一页面的2个标签共享相同的网络存储,因此您可以" poll" webstorage不需要ajax,也不需要通过网络发送任何东西。这样会更快,但是你必须在第二次或者#34;听"手动设置cookie。标签。或者,如果您将webstorage用于所有存储,那么如果您不需要它们来识别自己的异地/客户端/在线服务/服务器,则可以完全删除cookie。
答案 1 :(得分:1)
不知何故,轮询服务器在我的场景中无法帮助(不同的标签,同一个应用程序)。我用一些名为store.js的库解决了它。它不需要轮询服务器和内容,相反,只要在任何打开的选项卡上设置cookie,就可以立即在选项卡上立即共享cookie。最重要的是,我喜欢这个是store.js在可用时使用localStorage
,并且回退到 IE6 和 IE7中的userData
行为。没有闪光可以减慢页面加载速度。没有cookie可以增加您的网络请求。 store.js依赖于JSON来序列化到磁盘。它使用起来非常简单。
使用示例:
store.set('username', 'joe')
document.write('username: ' + store.get('username') + '<br />')
store.remove('username')
store.clear()
store.set('user', { name: 'joe', likes: 'javascript' })
var user = store.get('user')
document.write(user.name + ' likes ' + user.likes)