仅显示一次网站条目模式

时间:2017-07-20 12:26:49

标签: javascript html css

我正在使用remodal,以便在有人访问时在我的网站上显示模式。这是它的工作原理。

加载css和javascript:

<link rel="stylesheet" href="../dist/remodal.css">
<link rel="stylesheet" href="../dist/remodal-default-theme.css">
<script src="../dist/remodal.min.js"></script>

定义模态本身:

<div class="remodal" data-remodal-id="modal">
  <button data-remodal-action="close" class="remodal-close"></button>
  <h1>Remodal</h1>
  <p>
    Responsive, lightweight, fast, synchronized with CSS animations, fully customizable modal window plugin with declarative configuration and hash tracking.
  </p>
  <br>
  <button data-remodal-action="cancel" class="remodal-cancel">Cancel</button>
  <button data-remodal-action="confirm" class="remodal-confirm">OK</button>
</div>

显示模态:

<a href="#modal">Call the modal with data-remodal-id="modal"</a>

事情是每当我进入网站时,模态会一次又一次地显示。

是否可以使用缓存或每个用户只显示一次模式的内容来控制它?这意味着用户第一次访问网站时会显示模式,用户将其关闭,下次刷新网站时不会显示。

如果有可能,我该怎么做?

提前致谢。

4 个答案:

答案 0 :(得分:4)

查看askubuntu,使用该功能代替默认功能,在检查某个Cookie是否存在之前,让我们将其称为if (getCookie("seenModal") != "true") { //display the modal document.cookie = "seenModal=true"; // sets the modal-cookie } else { // modal already seen } function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i <ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; }

    ;WITH CTE AS (
select DISTINCT ProductID,AnotherProductId,Balance,
    CASE WHEN Balance>=0 THEN 'P' ELSE 'N' END Flag, row_number() over(partition by AnotherProductId order by Balance) RID
FROM (SELECT DISTINCT P.ProductID,I.AnotherProductId,(P.Quantity-C.Quantity) 'Balance'  
        FROM [ProductEntry] P INNER JOIN [IpEntry] I ON I.ProductID=P.ProductId
        INNER JOIN (SELECT [AnotherProductId],SUM([Quantity]) [Quantity] FROM [Consumption] GROUP BY [AnotherProductId]) C ON C.AnotherProductId=I.AnotherProductId
      )A
)
select T.AnotherProductId,Balance as Stock, C.Quantity as 'Quantity Used',MIN((P.Price *(P.Quantity-C.Quantity)/P.Quantity))  'Remaining Balance'
FROM [ProductEntry] P INNER JOIN CTE T ON T.ProductID=P.ProductId AND (RID=1 OR Flag='N')
INNER JOIN (SELECT DISTINCT ProductId,AnotherProductId FROM [IpEntry]) I ON I.ProductID=P.ProductId
INNER JOIN (SELECT [AnotherProductId],SUM([Quantity]) [Quantity] FROM [Consumption] GROUP BY [AnotherProductId]) C ON C.AnotherProductId=I.AnotherProductId
GROUP BY T.AnotherProductId,Balance, C.Quantity

答案 1 :(得分:0)

您可以通过在mysql表中输入有关用户的详细信息来实现。

只需存储用户的IP地址,每次用户访问您的网站时检查表中的IP地址是否存在不显示模态,如果没有则显示它...简单

答案 2 :(得分:0)

我认为您可以通过创建会话变量并进行检查来实现。会话变量可以在一定时间后取消设置。

答案 3 :(得分:0)

如果您只需要检查浏览器会话,则可以使用localStorage提供的HTML5 api。但是,如果您需要普遍使用,则可以在watched中保存db标记。