jquery - 浏览器问题的多个打开选项卡的客户端脚本变量范围

标签 jquery asp.net-mvc-4 razor timeout

我的共享 _Layout.cshtml 中有一个 jquery 脚本,它记录最后一次点击并在特定时间间隔后注销用户。出现的问题是,当打开超过 1 个页面时(即,在浏览器的多个选项卡中,打开同一应用程序的不同页面),如果任何页面在指定时间内保持空闲状态,则会注销用户。而用户当前正在处理的另一个页面,当用户点击时,它会抛出异常(这很明显,因为用户已被其他页面注销)。我无法使用 sessions 相关的东西。无论如何,我可以在浏览器的不同打开选项卡中维护此类变量的范围吗?如果用户正在处理任何打开的选项卡,我想将其他打开的选项卡的计时器重置为零。我尝试先四处寻找答案,但发现每个问题都与我的场景不同。

(我使用的是 MVC 4。Jquery 脚本位于/Shared/_Layout.cshtml 中)

最佳答案

我使用一些名为 store.js 的库解决了这个问题。 。它不需要轮询服务器和其他东西,相反,只要在任何打开的选项卡上设置 cookie,cookie 就会立即在选项卡之间共享(无需刷新选项卡;这通常是必需的)获取 cookie,在其他选项卡上设置。)。最重要的是,我喜欢这个的是 store.js使用localStorage当可用时,并依赖 userData IE6IE7 中的行为。没有闪光灯会减慢页面加载速度。没有 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/

相关文章:

asp.net-mvc - 针对 API Controller 创建 View ?

c# - Razor 在尝试显示 Item 时获取空引用

javascript - 根据 URL 变量显示/隐藏 Div

c# - 绕过 Controller MVC 上的 Windows 身份验证

asp.net - 如何阻止 ASP.NET Web api PUT 动词返回 500

javascript - Asp.Net MVC 4 中的复选框

c# - Blazor 获取 div 位置/坐标

javascript - 如何在 jquery 中获取文本值?

jquery - 使用 jquery 的 css calc 函数

javascript - 如何使用Jquery在用户点击回车键时触发按钮?