我正在使用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>
事情是每当我进入网站时,模态会一次又一次地显示。
是否可以使用缓存或每个用户只显示一次模式的内容来控制它?这意味着用户第一次访问网站时会显示模式,用户将其关闭,下次刷新网站时不会显示。
如果有可能,我该怎么做?
提前致谢。
答案 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
标记。