我已设置会话,并且只有当用户进入网站时才显示弹出窗口,但我的弹出窗口显示所有时间,下面是我的代码 -
<?php
Mage::getSingleton('core/session')->setWall('1');
$wall = Mage::getSingleton('core/session')->getWall();
if($wall =='1'){ ?>
<script>
jQuery(document).ready(function() {
jQuery('#earn-reward-box').show();
//jQuery('#earn-reward-box').delay(000).fadeOut();
});
</script>
<div id="earn-reward-box-main" style="display:block">
<div id="earn-reward-box" class="xmus-box">
<div id="earn-reward-close"> </div>
<a href="<?php echo Mage::getBaseUrl()?>christmas">
<img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);?>wysiwyg/deal.png" />
</a>
</div>
<div id="earn-reward-overlay"> </div>
</div><script>
jQuery('#earn-reward-close').click(function(){
jQuery('#earn-reward-box-main').toggle();
});
jQuery('#earn-reward-close').click(function(){
jQuery('#earn-reward-overlay').toggle();
});
</script>
<?php
Mage::getSingleton('core/session')->setWall('1');
}
Mage::getSingleton('core/session')->unsWall();
?>
答案 0 :(得分:0)
将会话变量设置为“display:block”,一旦显示并关闭,将其更改为“display:none”并将其设置为style =“这里是会话变量”。
答案 1 :(得分:0)
你可以通过像这样
保存到sessionStorage来为每个新会话显示它 jQuery(document).ready(function() {
if(window.sessionStorage.getItem('shown') === true ){
jQuery('#earn-reward-box').show();
}
});
当用户点击叠加层
时,您可以将项目设置为true jQuery('#earn-reward-close').click(function(){
window.sessionStorage.setItem('shown', true);
jQuery('#earn-reward-box-main').toggle();
});
答案 2 :(得分:0)
从MVC看,你需要一个存储在某处的模型(或状态)来判断弹出窗口是否已经显示。例如,您可以使用localStorage
作为存储此信息的位置:
localStorage.setItem('popup-shown', 'true');
下次打开此页面时,由于localStorage仍然存在,您可以判断它是否已经显示:
localStorage.getItem('popup-shown') === 'true'
然后您可以根据需要控制弹出窗口的行为。
sessionStorage
可能也没问题,但要注意这句话:
sessionStorage类似于Window.localStorage,唯一的区别是当localStorage中存储的数据没有到期设置时,sessionStorage中存储的数据会在页面会话结束时被清除。
https://developer.mozilla.org/en/docs/Web/API/Window/sessionStorage