我创建了一个横幅,我想让它在4分钟后出现。 我使用modalbox来显示横幅。
我需要类似的东西
If customers_session_time > 4 minutes then show me the banner
但是如果我将customers_session_time存储到数据库并在PHP上编写一些代码,那么用户将不得不刷新页面以查看横幅。
如果我使用javascript的setTimeout(),每次用户刷新页面时都会刷新你的超时时间......
还有其他办法吗?
答案 0 :(得分:2)
记住用户在会话中请求您的网站时的时间戳 每次用户进入网站时,您将检查他是第一次来这里还是他最近来的时间。然后计算会话中已经在网站上花费的时间。
var timeSpentOnSites = (1000*60*4) - <?= $_SESSION['TIME_SPENT_ALREADY'] ?>;
$(document).ready(function(){
setTimeout(function(){
$('#banner').show();
},timeSpentOnSites < 0 ? 0 : timeSpentOnSites);
});
答案 1 :(得分:2)
不是一个非常完整的代码,但你可能会有一个想法
<?php
session_start();
if( empty($_SESSION['time_session_started']) ){
$_SESSION['time_session_started'] = time();
}
$timeout = $_SESSION['time_session_started']+4*60 - time();
if( $timeout<0 ){
$timeout = 0;
}
?>
<script language="JavaScript">
<?php if( $timeout ){ ?>
setTimeout(function (){
showBanner();
},<?php echo $timeout*1000; ?>);
<?php }else{ ?>
showBanner();
<?php }
</script>
答案 2 :(得分:0)
您无法访问JavaScript中的任何会话,因为它是客户端的
您可以做的是,在成功加载DOM之后,您可以使用setTimeout();
方法并在4分钟后显示横幅。
$(document).ready(function(){
setTimeout(function(){
$('#banner').show();
},(1000*60*4));
});
编辑:我在发布答案后编辑了问题。答案回答了第一个问号。