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

时间:2015-02-17 01:23:34

标签: coldfusion

客户希望我创建一个当用户在网站上停留1分钟时出现的模态。我认为这对可用性不利,但它们完全基于这个想法。

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

但我不确定如何获得用户在网站上的时间。或者我应该看看饼干吗?

3 个答案:

答案 0 :(得分:3)

这是另一种方法。与@Antony建议的类似,使用会话开始时间创建一个varibale ...

然后在每个页面上(比如在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函数。否则,你根本就不生成块...

答案 1 :(得分:1)

考虑的方法有两个部分:

首先,当会话开始时,将当前时间(或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页面并不重要。

答案 2 :(得分:0)

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

然后你可以在javascript函数中使用该变量来倒计时并将模态显示为0。