客户希望我创建一个当用户在网站上停留1分钟时出现的模态。我认为这对可用性不利,但它们完全基于这个想法。
一旦用户点击关闭按钮,我将设置一个会话变量,以便模式不再出现。
但我不确定如何获得用户在网站上的时间。或者我应该看看饼干吗?
答案 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。