【问题标题】:I want to popup a window 3 minutes after the user enters the site我想在用户进入网站 3 分钟后弹出一个窗口
【发布时间】:2015-12-31 14:09:18
【问题描述】:

正如标题所说,我想在用户进入网站 3 分钟后弹出一个窗口。问题是因为用户不会在一个页面上停留 3 分钟。我不能使用javascript。因为他可能会导航到我网站上的不同页面。我尝试使用 setTimeout,但如果我导航到另一个页面,代码将再次刷新,它将无法正常工作。

【问题讨论】:

  • 您需要将计数作为 URL 参数跨页面携带。这是一个 hack,但它会起作用,尽管有点不准确。
  • 最好在服务器端计算时间。另外,您可以在客户端时间使用cookie、localstore来存储时间,这样客户端可以轻松更改时间

标签: javascript jquery asp.net


【解决方案1】:

听起来对 sessionStorage 很有用:

  1. 在初始页面加载时,检查 sessionStorage 项是否存在
  2. 如果该项目不存在,则使用当前日期/时间填充它
  3. 如果项目确实存在,则使用 setInterval 轮询和比较时间,例如每 100 毫秒。如果 3 分钟过去了,弹出消息。

sessionStorage 值将在页面和页面重新加载之间保持不变。

例子:

// Save date to sessionStorage
sessionStorage.setItem('your-key', new Date());

// Get saved date from sessionStorage
var date = sessionStorage.getItem('your-key');

如果您使用此方法,您可能希望先使用 localstorage,然后再使用 cookie。

【讨论】:

    【解决方案2】:

    您可以在服务器端使用会话。将会话开始时间放在会话变量中。每次请求新页面时,您都可以返回会话开始时间。然后,将此 DateTime 以及当前服务器 DateTime 提供给您的全局 javascript 函数,该函数将处理进一步的计算以及显示弹出窗口。

    请记住,我也从服务器获取当前 DateTime,因为在大多数情况下,javascript 检测到 DateTime 与服务器 DateTime 不同(由于托管位置等)。使用此解决方案,唯一的缺点是您将无法跟踪客户端服务器往返造成的滞后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多