是否有可能获得会话的年龄?

Is it possible to get the age of a session?

客户希望我创建一个模式,当用户在网站上停留 1 分钟时出现该模式。我认为这对可用性不利,但他们非常认同这个想法。

一旦用户点击关闭按钮,我将设置一个会话变量,这样模式就不会再次出现。

但我不确定如何获取用户在网站上的停留时间。还是我应该看看 cookie?

我唯一能想到的就是在创建会话变量时创建一个代表 60 秒的变量。

然后您可以在 javascript 函数中使用该变量进行倒计时并在 0 处显示模态。

考虑的方法分为两部分:

首先,当会话开始时,将当前时间(或tickcount)添加到会话中并将modalshown标志设置为false:

sample code: <cfset session.sessionStart = getTickCount() /> <cfset session.modalshown = false />

其次,您的前端可以使用ajax 轮询来请求当前用户的sessionStart 时间,并在sessionStart 时间超过60 秒时显示模态。一旦显示模态,您还需要在会话上设置一个标志,这样您就不会在 60 秒后每次都显示模态。

sample code: <cfif getTickCount() - session.sessionStart gt 60*1000 and !session.modalShown> <cfset session.modalShown = true /> <cfreturn true /> </cfif>

通过使用 ajax 和会话范围,当 60 秒到期时,他们正在浏览哪个 coldfusion 页面并不重要。

这是另一种方法。与@Antony 建议的类似,创建一个带有会话开始时间的变量...

然后在每个页面上(比如 application.cfm)你都有这样的 CF 代码:

<cfset msRemaining = getTickCount() - session.sessionStart>
<cfif msRemaining lt 60*1000 and !session.modalShown>
    <script>
       setTimeout(showModel(), <cfoutput>#msRemaining#</cfoutput>);
    </script>
</cfif>

我们的想法是计算在您需要显示模态之前还剩多少毫秒。如果少于 60 秒,您添加一个 javascript 块,它将在该多毫秒后调用您的 showModal() javascript 函数。否则,你根本就不会生成块...