【发布时间】:2021-08-16 16:31:35
【问题描述】:
函数调用 cookieExists('stylesheet') 应该检测 cookie 的存在,如果存在名为“stylesheet”的 cookie,则返回 true,否则返回 false。
function cookieExists(name) {
var ckArr = document.cookie.split(';');
for(i = 0; i < ckArr.length; i++)
if (ckArr[i].split('=')[0].trim() == name) return true;
else return false;
}
此功能旨在检查所有现有 cookie 的名称,但我在一个只有一个 cookie 的页面上使用它 - 它的名称是“样式表”。我在页面加载时调用它来检查名为“样式表”的 cookie 是否存在。此 cookie 指定上次使用的 CSS 文件(用户可以选择任一样式表):样式表 1.css 或样式表 2.css。如果存在名为 'stylesheet' 的 cookie,我想使用 cookie 中指定的样式表来显示页面。
现在,如果实际上没有名为“样式表”的现有 cookie,cookieExists('stylesheet') 会返回 false。如果我在页面中添加一个名为“样式表”的 cookie,cookieExists('stylesheet') 返回 true。到目前为止,一切顺利。
但是,如果我随后关闭浏览器选项卡 - 虽然页面上附加了名为“样式表”的 cookie - 然后在新选项卡中打开同一页面,cookieExists('stylesheet') 不再检测到 cookie 并返回 false! cookie 仍然附加到页面 - 在上一个会话结束时它还没有过期。
需要明确的是,我在页面加载时使用window.onload = findStylesheet; 调用cookieExists('stylesheet'),其中函数findStylesheet() 调用cookieExists('stylesheet'):
function findStylesheet() {
let savedStylesheet = cookieExists('stylesheet');
if (savedStylesheet) {
let setStylesheet = Cookies.get('stylesheet');
let newStylesheet = document.getElementById("stylesheet");
newStylesheet.setAttribute('href', setStylesheet);
}
}
函数Cookies.get('stylesheet') 是一个js-cookie 函数。
如果有人能指出我哪里出错了,我将不胜感激。
【问题讨论】:
标签: javascript cookies