Javascript 如何使我的cookie同意横幅为每个用户(ip)弹出一次

Javascript 如何使我的cookie同意横幅为每个用户(ip)弹出一次,javascript,jquery,html,css,Javascript,Jquery,Html,Css,首先,我知道以前也回答过类似的问题,但我真的不明白,我现在是jquery的一个核心,我真的不知道如何在我的代码中实现它,也不知道它是如何工作的。如果有人不仅能给我解决方案,而且能解释它的作用,那将是多么美妙 这是我的HTML <div id="cookieConsent"> This website is using cookies. <a href="#" target="_blank">More info</a>.&

首先,我知道以前也回答过类似的问题,但我真的不明白,我现在是jquery的一个核心,我真的不知道如何在我的代码中实现它,也不知道它是如何工作的。如果有人不仅能给我解决方案,而且能解释它的作用,那将是多么美妙

这是我的HTML

<div id="cookieConsent">
                    This website is using cookies. <a href="#" target="_blank">More info</a>.<a class="cookieConsentOK">That's Fine</a>
</div>
最后是我的工作但烦人的jqueryjs文件

$(document).ready(function(){   
    setTimeout(function () {
        $("#cookieConsent").fadeIn(700);
     }, 1000);
    $(".cookieConsentOK").click(function() {
        $("#cookieConsent").fadeOut(700);
    }); 
}); 

如果有人能帮助我,让弹出窗口在每个IP或用户会话中只显示一次(我的意思是,直到他们完全关闭浏览器,并试图专注于移动),并且不仅为我提供解决方案,还解释它,我会喜欢你

正如评论中所建议的,在对“cookieConsentOk”的回复中,您可以将他们在cookie中记录的信息存储为cookie或localStorage

使用本地存储:

localStorage.setItem('cookies_enabled', '1'); // Use cookies
或者如果禁用

localStorage.setItem('cookies_enabled', '0'); // No cookies
您可以通过获取

if (localStorage.getItem('cookies_enabled') === '1') {
    // save cookies for session
}
您可以在以下情况下显示横幅:

if (localStorage.getItem('cookies_enabled') === null) {
    // display banner
}

如果您确实需要为每个ip显示一个横幅(如您的问题标题中所述),那么恐怕唯一100%符合要求的解决方案将至少涉及某种后端,基本上是可靠地检测ip地址

不过,我相信您只需要一个常规的cookie横幅,因此使用localStorage的解决方案就足够了


如果你感兴趣,你也可以尝试用指纹而不是饼干。同样,需要一些后端,但根据您的应用程序,您可能根本不需要那个恼人的横幅,同时仍然启用了用户跟踪

您可以使用上面的答案直接在项目中执行,但也可以使用Google Tag Manager

我已经建立了一个版本的cookie横幅,将向新访问者显示,如果他们选择允许cookie,它将使用第一部分cookie隐藏,如果他们拒绝,它也会这样做。然后根据访问者给出的答案,它将插入脚本并允许第三方cookie

只需首先加载GTM即可,如果未设置cookie,GTM将加载cookie横幅。如果他们接受,我们将放置一个cookie,该cookie将隐藏横幅并接受脚本(然后GTM添加脚本并允许第三方cookie),如果他们拒绝,我们将放置一个第一方cookie,以防止GTM加载脚本和第三方cookie。cookie横幅将在cookie用完或用户与重新打开横幅的按钮交互时再次显示


要了解我是如何做到的,欢迎您阅读我写的这篇文章:

cookies或localstorage@WilomGfx你说我不明白是什么意思,就像我说的我是一个傻瓜,所以请你解释一下它们之间的区别,对不起,要让cookie通知生效,你需要一种让浏览器记住的方法,比如一个小便条或消息。这可以通过Cookie(服务器的消息)或localStorage(浏览器的消息)实现。使用任何一种API,您都可以让浏览器记住cookie消息是否已被接受,或者如果需要,是否已被拒绝。看看这些API是如何工作的,并尝试一下。MDN总是有很好的文档。当我在代码中实现它时,如何检查它是否工作?我不知道如何在我的代码中实现它,你能给我演示一下,并解释一下为什么你把它放在你做的地方,这样我就可以学习了。请使用匿名浏览器窗口并每次重新打开,或者使用浏览器控制台中的localStorage.removeItem(“启用cookies_”)手动删除该值。您需要包装在最后一个条件(即本地存储密钥等于null)中显示横幅的代码。否则,您将从localStorage.getItem('cookies\u enabled')知道该值。
if (localStorage.getItem('cookies_enabled') === null) {
    // display banner
}