我的共享 _Layout.cshtml
中有一个 jquery 脚本,它记录最后一次点击并在特定时间间隔后注销用户。出现的问题是,当打开超过 1 个页面时(即,在浏览器的多个选项卡中,打开同一应用程序的不同页面),如果任何页面在指定时间内保持空闲状态,则会注销用户。而用户当前正在处理的另一个页面,当用户点击时,它会抛出异常(这很明显,因为用户已被其他页面注销)。我无法使用 sessions
相关的东西。无论如何,我可以在浏览器的不同打开选项卡中维护此类变量的范围吗?如果用户正在处理任何打开的选项卡,我想将其他打开的选项卡的计时器重置为零。我尝试先四处寻找答案,但发现每个问题都与我的场景不同。
(我使用的是 MVC 4。Jquery 脚本位于/Shared/_Layout.cshtml
中)
最佳答案
我使用一些名为 store.js 的库解决了这个问题。 。它不需要轮询服务器和其他东西,相反,只要在任何打开的选项卡上设置 cookie,cookie 就会立即在选项卡之间共享(无需刷新选项卡;这通常是必需的)获取 cookie,在其他选项卡上设置。)。最重要的是,我喜欢这个的是 store.js
使用localStorage
当可用时,并依赖 userData
IE6 和 IE7 中的行为。没有闪光灯会减慢页面加载速度。没有 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)
关于jquery - 浏览器问题的多个打开选项卡的客户端脚本变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23926873/