即使用户正在导航到其他页面,也要在一段时间后打开弹出窗口
Make popup opening after a while even if the user is navigating to other page
我需要一些关于这段javascript代码的帮助。
我有这个代码:
jQuery(document).ready(function(){
if (document.cookie.indexOf('visited=true') == -1) {
var fifteenDays = 1000*60*60*24*1;
var expires = new Date((new Date()).valueOf() + fifteenDays);
document.cookie = "visited=true;expires=" + expires.toUTCString();
window.setTimeout(
function() {
jQuery.colorbox({href:"/popup.htm", open:true, iframe:false, innerWidth:600, innerHeight:490});
},
30000 )}});
它应该在30秒后打开一个弹出窗口,每天一次。问题是它在30秒后打开的弹出窗口停留在页面上。即使客户端导航到其他页面,有没有办法让它在30秒后打开?因此,如果用户在一个页面上停留15秒,在另一个页面停留15秒就会弹出。
提前感谢
这里要克服的根本问题是在页面之间传递"state"。由于您已经在示例中使用了cookie,我们将对此进行处理。您需要设置一个会话cookie,其中包含用户在网站上的时间(最初为0)。然后,你需要每隔一段时间(可能每5秒)对cookie进行一次"轮询",以更新网站上的总时间,并将其读回。如果是30秒或更长时间,启动弹出窗口。
因此,不使用:
setTimeout(function() {
// open alert box
}, 30000);
你会做一些类似的事情:
setTimeout(function() {
// Increment 'time-on-site' cookie value by 5000
// Then, if 'time-on-site' cookie value >= 30000, fire popup
}, 5000);
更新当然,这需要与服务器进行更多的来回通信,因为您需要每5秒传达一次更新后的值。
没有办法。一旦卸载页面,您就不能做任何其他事情。您需要使用服务器上的其他资源(Cookie、会话等)来检查窗口是否已显示。
是
但是使用document.cookie
是不可能的。
您需要使用服务器端cookie或HTML本地存储/会话存储。
类似Response.SetCookie("Visited", true)
。我不知道你在用什么作为后台。
相关文章:
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 收集一段时间内的EMG数据.建议JS
- 在一段时间内切换文本
- 如何停止字幕文本一段时间,然后继续
- HTTP服务器在一段时间后停止(Node.js)
- Hammer.js过了一段时间就停止工作了
- Meteor-在一段时间内解锁模板(按日期)
- 画布在一段时间后开始滞后
- JS-在一段时间后水平移动图像
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 表单提交在一段时间循环PHP,jquery
- 一段时间后生成回发
- 一段时间后自动点击提交按钮
- 即使用户正在导航到其他页面,也要在一段时间后打开弹出窗口
- 如何创建一个显示在窗口底部角落的DIV(经过一段时间后)
- 如何制作仅在访问者在页面上停留一段时间后才会出现的弹出窗口
- 如何在用户进入asp.net网站一段时间后生成弹出窗口
- 如何立即或在一段时间后取消/隐藏窗口警报
- 在弹出窗口或选项卡浏览器之间切换一段时间后
- 如何在窗口加载javascript函数.延迟一段时间后加载