4

我试图弄清楚如果用户单击关闭按钮,如何隐藏一个元素以使其不再显示。基本上它只是一个带有促销信息的下拉菜单。如果用户单击关闭,我不希望此元素再次显示给该用户。

我希望它的功能就像这里看到的横幅http://codecanyon.net/

有没有办法做到这一点?我尝试用谷歌搜索这个答案,但找不到这个例子。我假设这需要通过 cookie 来实现。此外,如果是这种情况,这会导致 SSL 加密页面出现任何问题吗?

更新:设置一个在这么多天后过期的 cookie 怎么样?

这是我的代码:

   <div id="promotional-banner">
      <div id="promotional-wrapper">
          <div id="promotional-container">
              <p class="left"><img src="<?php echo Mage::getStoreConfig(Mage_Core_Model_Store::XML_PATH_SECURE_BASE_URL); ?>media/wysiwyg/infortis/fortis/custom/rewards.png" alt="Earn Rewards" title="Earn Rewards" /> Earn reward points every time you shop at WeePumpkin.com</p>
              <div class="right close-button"><span>X</span> Dismiss</div>
              <div class="clear"></div>
          </div>
      </div>
   </div>

   <script type="text/javascript">
     $$ = jQuery;
     $$(document).ready( function() {
        if ($$("#promotional-banner").is(":hidden")) {
        $$("#promotional-banner").delay("1000").fadeIn();
        }

     $$("div.close-button").click(function(){
        $$("#promotional-banner").delay("slow").fadeOut();
     });
     });
   </script>
4

2 回答 2

3

如果您的意思是“永远永远”,例如当他们离开页面并返回时,您将需要合并服务器端技术。

如果您有未注册的用户,您可以使用 PHP(或类似的)来捕获他们的 IP 并用标志标记该 IP。标志的初始状态将是“显示”或类似的。一旦他们点击了关闭,就向您的服务器发送一个快速的 jQuery ajax 请求,将标志标记为“隐藏”。

显然,如果他们更改了 IP,您的信息就会过时。

您也可以使用 cookie 作为解决方案,但如果他们清除了 cookie,它就会丢失。

于 2013-08-31T03:22:38.550 回答
1

您可以结合使用后端和前端解决方案来实现这一点。基本上,当用户注册时,他的用户名会针对 isPromotionsAllowed 之类的后端标志(在数据库中)进行注册。当用户最初注册时,这个标志必须设置为真。当他再次登录访问应用程序时,如果 db 中的此标志设置为 true,则将向他显示横幅等促销内容。当他单击“关闭”时,后端数据库字段将更新为 false,因此他将不再看到内容。

为了提高用户体验,这个标志也可以扩展到cookies。当他点击dismiss时,可以保存一个包含标志的cookie,这样我们就可以节省额外的往返服务器和返回检查促销事项是否是否显示。这是我们可以在基本解决方案之上实现的条件增强。

于 2013-08-31T03:31:02.553 回答