浏览30秒后加载弹出窗口
Load popup after 30 seconds of browsing
我有一个浏览主页30秒后加载的弹出窗口。是否有可能在浏览网站30秒后加载它,而不仅仅是一个特定的页面?
谢谢。
更新:
当前代码仍然只在每页加载30秒后加载该框
var myDaemon = '';
localStorage.setItem('myTimestamp', Date.now());
if(myDaemon) clearInterval(myDaemon);
myDaemon = setInterval(function(){
var TimeDiffinSeconds = (Date.now() - localStorage.myTimestamp) / 1000;
if( TimeDiffinSeconds > 30){
requestcallback();
clearInterval(myDaemon);
localStorage.myTimestamp = Date.now();
}
},1000);
function requestcallback(){
// localStorage.clear();
var popup
if(localStorage["popup"] != null){
var timestamp = new Date().getTime(),
last_here = new Date();
last_here.setTime(localStorage["popup"]);
var current = last_here.getTime() + (7 * 24 * 60 * 60 * 1000);
if(current < timestamp){
popup = setTimeout(showPopup, 1);
}
}
else{
popup = setTimeout(showPopup, 1);
}
function showPopup(){
jQuery('.overlay').fadeIn();
clearTimeout(popup);
}
jQuery('.overlay .close').click(function(){
jQuery('.overlay').fadeOut();
var current = new Date().getTime();
localStorage["popup"] = current;
});
}
您可以使用Local Storage,以便在用户访问站点时保存时间戳,然后编写一个简单的SetInterval
以在特定的时间间隔检查该时间戳。如果当前时间戳与保存的时间戳相差超过30秒,则可以启动弹出窗口。
这在Javascript中很棘手。根据你的网站设计不同的方法是必需的。另外,如果是出于安全考虑,最好使用AJAX和通过服务器进行验证。Javascript可以很容易地被用户操纵/阻止,你的代码也可以很容易地避免。
一个简单的例子让你开始:
在您的index
页面插入以下代码:
<script>
var myDaemon = '';
localStorage.setItem('myTimestamp', Date.now());
</script>
我们已经声明了一个"var myDaemon = '';
",这样我们就可以在那里保存我们的守护进程id,并在以后有效地从我们的任何页面中清除它们。然后在要检查活动的页面插入以下代码:
if(myDaemon) clearInterval(myDaemon);
myDaemon = setInterval(function(){
var TimeDiffinSeconds = (Date.now() - localStorage.myTimestamp) / 1000;
if( TimeDiffinSeconds > 30){
alert('You have been browsing for more than 30 Seconds');
clearInterval(myDaemon);
localStorage.myTimestamp = Date.now();
}
},1000);
-
if(myDaemon) clearInterval(myDaemon);
在那里确保我们不会重叠守护进程,并在访问几个页面后以一百万的警报结束。 - 警报后的
clearInterval(myDaemon);
确保我们在达到目标时停止守护进程。 -
localStorage.myTimestamp = Date.now();
确保我们将本地存储重置为新的时间戳,以便重新计算用户的活动(如果需要)。
1)定义cookie函数(从w3school复制)
function setCookie(cname, cvalue, exdays) {...}
function getCookie(cname) {...}
function checkCookie() {...}
2)创建cookie如果用户没有一个
getCookie('user_first_visited') || setCookie('user_first_visited', Date.now());
3)循环检测用户访问是否超过30秒
if (!getCookie('user_popup_triggerred')) {
var loopDetect = setInterval(function(){
var TimePast = (Date.now() - getCookie('user_first_visited')) / 1000;
if( TimePast > 5){
alert('Browsed any page more than 5 Seconds');
clearInterval(loopDetect);
setCookie('user_popup_triggerred', 1);
}
}, 1000);
}
参见jsfiddle,你可以在两个页面上尝试它,你不应该在触发一次后重新加载页面上得到popupBox。清理浏览器cookie再试一次
相关文章:
- 召回窗口加载事件 - javascript
- AngularJS:触发从子窗口加载视图(OAuth)
- 将函数从点击事件更改为窗口加载
- 我想在窗口加载后只调用一次JavaScript setInterval函数
- 我有一个用于 onclick 的窗口加载函数 如何添加 onblur 事件并合并为一个
- 如何使用窗口加载函数使我所有的 javascript 都外部化
- 窗口加载功能无法停止
- Javascript 在窗口加载时将 onclick 事件添加到单选按钮
- Javascript在停止窗口加载后显示一些内容
- Javascript:选择窗口加载功能
- 在应用中的窗口加载事件 famo.us
- 创建页面的模式窗口加载以用于用户反馈
- 将图像组合在一起并在窗口加载时对图像进行动画处理
- 窗口加载未触发
- 如何从父窗口加载关闭子窗口
- 窗口加载功能不起作用
- 如何在自定义弹出窗口加载中加载 js/css 文件
- jQuery 的窗口加载包装器
- 如何在窗体/窗口加载时使用角度引导程序调用函数以显示第一个选项卡的动态内容
- 窗口加载时未触发警报