Javascript:每个页面的唯一 if 条件和 cookie



事情是这样的:

我有两个单独的页面,其中隐藏了一些内容,只有在我的页面上花费一定时间后才会显示(与我在视频中所说的内容同步(。这是A页,这是B页

在该页面上,您将看到一段视频。如果你重新加载页面,你会看到下面弹出一个绿色按钮。之所以会发生这种情况,是因为我在页脚处有以下脚本来设置cookie,并记住"从第二次访问开始,始终显示内容"。

这是脚本:

<script>if(/(^|;)s*cookie_lp=/.test(document.cookie)){var divs=document.querySelectorAll("div.thrv_content_reveal");[].forEach.call(divs,function(e){e.style.display="block"})}else document.cookie="cookie_lp=true; max-age=31536000";</script>

脚本本身非常简单:它只是检查cookie是否返回真值。如果是,请显示内容。如果没有,则设置cookie。

(至少我相信它是这样的。不是我编码的。(

问题是,如果我第一次转到页面A,按钮是隐藏的。如果我立即访问页面B,按钮会显示出来,即使这是第一次访问特定的页面(因为cookie是在用户浏览器中设置的(。

因此,我需要的只是调整脚本,使其独特,并在每页的基础上工作。含义:

如果我第一次访问页面A,按钮将被隐藏。第二次,按钮出现。但是…如果我在那之后访问页面B,按钮应该仍然是隐藏的(第一次访问该页面(。

我曾尝试将cookie名称更改为每个页面的唯一页面(例如:cookie_lp_pageA(,但这产生了一个不同的问题,我不确定为什么(无论访问次数如何,按钮都不会显示(。

我相信这是我没有看到的小东西(我不是程序员,只是一个好奇的人(。所以也许有人会很快发现它。

谢谢!

您可以尝试使用本地存储https://www.w3schools.com/jsref/prop_win_localstorage.asp

此代码应在A页或B页上工作:

<!DOCTYPE html>
<html>
<head>
<script>
function visitCounter(pageID) {
if(typeof(Storage) !== "undefined") {
if (localStorage['page'+pageID]) {
localStorage['page'+pageID] = parseInt(localStorage['page'+pageID]) + 1;     
document.getElementById('button1').innerText = "Show";
} else {
localStorage['page'+pageID] = 1;
}
document.getElementById("result").innerHTML = "You have visited " + localStorage['page'+pageID] + " time(s).";
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support web storage...";
}
}
</script>
</head>
<body>
<p><button type="button" id="button1">Hide</button></p>
<div id="result"></div>
<p>Close the browser tab (or window), and try again, and the counter will continue to count (is not reset).</p>

<script>
var url  = window.location.pathname;
var pageID = url.substr(url.lastIndexOf("/") + 1); //pageA, pageB
visitCounter(pageID);
</script>
</body>
</html>

最新更新