我有一个ASP.net MVC项目。我想在js中创建一个函数,它只在程序的当前运行中的第一次加载时执行。换句话说,如果有人进入不同的页面并回来 - 我不希望它再次发生。但如果我从一开始就重新运行该项目,我希望它能够实现。
我做了我的研究 - 但我发现的一切 - Cookies和本地存储的想法对我来说都不起作用,因为它们只能在用户页面的第一次加载时工作 - 所以如果我们出去从同一台计算机上重新运行该项目,它将无法工作......
有人有想法吗?
答案 0 :(得分:1)
我不确定你是否已经明确定义"首先" "回来"和"当前运行。"这些不是Web应用程序中的直接概念,从逻辑角度来看,它们永远不会启动或停止,也没有任何访问顺序的概念,除非您专门编写了维护工作流状态的方法,这不一定是微不足道的。
如果您希望脚本只运行一次,无论从任何计算机访问该页面的次数如何,您都可以在运行后设置application variable。在对页面的后续请求中,检查应用程序变量,如果存在变量,则省略Javascript。请注意,如果应用程序因任何原因重置,脚本将再次运行,例如应用程序池回收,可能是自动的,具体取决于您的Web服务器设置。
如果您想要一个每个浏览器实例只运行一次的脚本,请在运行后设置一个cookie。在对页面的后续请求中,检查cookie,如果存在,则跳过脚本的执行。请注意,如果用户有多个浏览器,他将能够让脚本多次运行,因为大多数浏览器不共享cookie jar。
如果你想要一个每个浏览器只运行一次 session 的脚本(例如,如果你关闭并打开浏览器,脚本应该再次运行),请在它之后设置session cookie运行。在对页面的后续请求中,检查cookie,如果存在,则跳过脚本的执行。
如果您想要一个每个用户只运行一次的脚本,则需要一些识别当前用户的方法。这意味着您需要一种身份验证机制。在这种情况下,只有在用户刚刚进行了身份验证时才运行脚本 - 在用户数据库中设置一个标志,表明用户已经目睹了脚本的执行,并在再次呈现脚本之前进行检查。
答案 1 :(得分:0)
你部分在那里。
或者像评论所说的那样,只需使用会话并在项目重新启动时使其过期。