gpt4 book ai didi

javascript - 通过 javascript 读取 cookie 时出现错误

转载 作者:行者123 更新时间:2023-12-03 05:00:39 26 4
gpt4 key购买 nike

当用户接受页面上的 cookie 时,我会存储 cookie....一旦他们这样做,就会阻止人们在访问时看到弹出窗口。

尽管当我在 body onload 中调用读取 cookie 脚本时,它什么也没做。

Cookie 的设置与我在 chrome 内容设置中看到的一样。

我尝试执行此操作的方法是在外部 .js 中调用一个名为 cookieornot() 的函数,该函数调用另一个函数并将返回值存储为变量

我的 cookieornot() 代码是:

  function cookieornot(){
var result = readCookie("acceptcookies");
if (result) {
document.getElementById('acceptcookies').style.display = 'none';
} else {
document.getElementById('acceptcookies').style.display = 'block';
}
}

我的 readcookie() 代码是

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}

在我的 HTML 文件中,我有外部 .js 文件将两个函数引用保存为

<script src="assets/js/ordersys.js"></script>

我的 HTML 部分是:(如果设置了 cookie,DIV ID="acceptCookies"应该被隐藏)

<body onload='cookieornot()'> <a href="#" class="scrollToTop w3-btn fa fa-chevron-circle-up fa-2x">
</a>
<!-- Modal -->
<nav class="w3-sidenav w3-white w3-card-8 w3-animate-left w3-center" style="display:none;z-index:4;width:70px"

id="mySidenav"> </nav>
<!-- Overlay -->
<div id="id02" class="w3-modal"> </div>
<div id="id01" class="w3-modal"> </div>
<div id="id03" class="w3-modal"> </div>
<!-- Begin Code Here -->
<div id="Header"></div>
<div id="acceptCookies" class="w3-panel w3-blue w3-card-12" style="position:fixed;bottom:0px;right:0px;width:100%;">
<span onclick="this.parentElement.style.display='none'" class="w3-closebtn">&times;</span>
<h3>This Site Uses Cookies</h3>
<p>We use cookies to help improve the function of this site. <a href=cookies.html>Learn More</a></p>
<button class="w3-btn w3-round-xxlarge" onclick="acceptCookies()">I Accept Cookies</button><br><br>
</div>

所以只是为了迭代,cookie 已正确设置:

名称:acceptcookies内容:真实域名:.XXXXX.XXXX小路: /发送:任何类型的连接可访问脚本:是创建时间:2017 年 2 月 14 日星期二下午 5:30:47到期时间:2018 年 2 月 14 日星期三下午 5:30:47

但是如果像预期的那样设置了acceptcookies cookie,则此代码不会隐藏 div。

我可以从 body onload 切换到这里吗:

<script type="text/javascript">
$(document).ready(function() {
$('#mySidenav').load('assets/static_html/navbar_links.html');
$('#Header').load('assets/static_html/header_on.html');
$('#Footer').load('assets/static_html/footer.html');
$('#id02').load('assets/static_html/email_modal.html');
$('#id01').load('assets/static_html/phone_modal.html');

$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$('.scrollToTop').fadeIn();
} else {
$('.scrollToTop').fadeOut();
}
});
//Click event to scroll to top
$('.scrollToTop').click(function(){
$('html, body').animate({scrollTop : 0},800);
return false;
});
});
</script>

如果是的话我该怎么做?

最佳答案

根据 readCookie 的写入方式,您可以更改 cookie 中的这一行,也可以不更改

if (result === "True") {

if(result) {

因为如果它没有找到cookie,那么它将返回null。仅当 cookie 为 true 时才会创建该 cookie。希望这会有所帮助。

第 2 部分因为您已经有一个 jQuery.ready 事件,我们可以利用它在整个 DOM 加载后运行该函数。下面我已将函数调用添加到您帖子底部的 javascript 部分。您需要将其从 body onload 中删除。

$(document).ready(function() {
$('#mySidenav').load('assets/static_html/navbar_links.html');
$('#Header').load('assets/static_html/header_on.html');
$('#Footer').load('assets/static_html/footer.html');
$('#id02').load('assets/static_html/email_modal.html');
$('#id01').load('assets/static_html/phone_modal.html');

$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$('.scrollToTop').fadeIn();
} else {
$('.scrollToTop').fadeOut();
}
});
//Click event to scroll to top
$('.scrollToTop').click(function(){
$('html, body').animate({scrollTop : 0},800);
return false;
});

cookieornot(); // Function added here.
});

关于javascript - 通过 javascript 读取 cookie 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com