【问题标题】:Popup show one time only仅弹出一次
【发布时间】:2017-07-01 02:23:45
【问题描述】:

我已经设置了会话,并且想在用户进入网站时只显示一次弹出窗口,但是我的弹出窗口一直显示,下面是我的代码 -

<?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">&nbsp;</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">&nbsp;</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(); 

?>

【问题讨论】:

    标签: javascript magento-1.9.1


    【解决方案1】:

    一旦会话变量显示并关闭,将其设置为“display:block”,将其更改为“display:none”,并将其设置为 style="here is the session variable"。

    【讨论】:

    • 你能告诉我怎么做吗?
    • 我不太了解 php 和 magento 。所以你必须自己弄清楚。
    【解决方案2】:

    您可以通过像这样保存到 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();
         });
    

    【讨论】:

      【解决方案3】:

      从 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-13
        • 1970-01-01
        • 2017-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多