切换网页风格使用cookie存储(防止刷新丢失)

当在HTML本地文件中创建cookie时,可能会遇到不生效的问题。这通常由于浏览器的安全策略,如Chrome禁止file协议下的cookie。为解决此问题,可以将文件部署到服务器环境,或使用Firefox等其他浏览器。本文提供了两种可能的解决方案。
摘要由CSDN通过智能技术生成
/* Style Switcher by Paul Sowden, see A List Apart: http://www.alistapart.com/articles/alternate/ */

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  };
  createCookie("test",title,30);
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("l
你可以使用以下代码实现点击更换背景图并保存到cookie,以防止刷新时重置背景图: ``` // 获取背景图元素 const bgElement = document.getElementById('background'); // 获取保存在cookie中的背景图地址 const bgUrl = getCookie('bgUrl'); // 如果cookie中有保存的背景图地址,则设置为背景图 if (bgUrl) { bgElement.style.backgroundImage = `url(${bgUrl})`; } // 给背景图元素绑定点击事件 bgElement.addEventListener('click', function() { // 弹出文件选择框选择新的背景图 const input = document.createElement('input'); input.type = 'file'; input.accept = 'image/*'; input.onchange = function() { const file = input.files[0]; if (file) { // 将新的背景图设置为背景图 const reader = new FileReader(); reader.onload = function() { bgElement.style.backgroundImage = `url(${reader.result})`; // 将新的背景图地址保存到cookie中 setCookie('bgUrl', reader.result, 30); }; reader.readAsDataURL(file); } }; input.click(); }); // 获取cookie function getCookie(name) { const cookieArr = document.cookie.split(';'); for (let i = 0; i < cookieArr.length; i++) { const cookie = cookieArr[i].trim(); if (cookie.startsWith(name + '=')) { return cookie.substring(name.length + 1); } } return null; } // 设置cookie function setCookie(name, value, days) { const date = new Date(); date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); const expires = 'expires=' + date.toUTCString(); document.cookie = name + '=' + value + ';' + expires + ';path=/'; } ``` 在上面的代码中,我们首先获取背景图元素和保存在cookie中的背景图地址。如果cookie中有保存的背景图地址,则设置为背景图。然后给背景图元素绑定点击事件,弹出文件选择框选择新的背景图,将新的背景图设置为背景图,并将新的背景图地址保存到cookie中。最后,我们还定义了两个函数getCookie和setCookie来获取和设置cookie
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值