【问题标题】:no css after refresh刷新后没有css
【发布时间】:2011-12-09 15:30:58
【问题描述】:

我有这个 pixelpost photoblog,它有一个带有 java 脚本 css 切换器的主题。

问题是如果我切换到替代 css(黑色主题)并点击刷新,页面会被剥离任何 css 信息。如果我不刷新一切似乎都可以。

由于我对编程还很陌生,所以我无法弄清楚,请您帮帮我。 This是站点,切换器在右上角(html和js代码如下):

<a href="#" onclick="setActiveStyleSheet('light'); return false;"><b>Light</b></a>/<a href="#" onclick="setActiveStyleSheet('dark'); return false;"><b>Dark</b></a>

js:

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;
    }
  }
}

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("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
           && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

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;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

【问题讨论】:

  • 在 Firefox 7 和 Chrome 13 上运行良好。
  • 这里也一样。无论如何,如果刷新后出现问题,则意味着 cookie 的值错误。你可以看看alert(document.cookie)设置了什么@
  • 我找到了名为 style、“content: dark”和“accessible to script: yes”的 cookie,所以看起来值没问题。

标签: javascript css refresh styleswitching


【解决方案1】:

在应用 cookie 样式时,该样式可能尚未加载。

试着把

<script type="text/javascript" src="templates/simplyElegant/scripts/styleswitcher.js"></script>

在文档底部,标签之前。

【讨论】:

  • 工作得很好,谢谢 Nik。刷新页面还有几分之一秒,没有应用CSS,但暂时还可以。
  • 糟糕,说得太早了。现在有一个新问题。一个特定页面上有多个脚本,除非它们按特定顺序放置,否则照片不会显示。 styleswitcher.js jquery-1.3.2.min.js jScripts.js 如果我把它们都放在底部,在 html 标签之前我会遇到和以前一样的问题。如果我只放置样式切换器,则无法加载照片。该技巧适用于仅调用一个脚本的其他页面。
猜你喜欢
  • 1970-01-01
  • 2013-01-05
  • 2013-11-08
  • 2018-07-31
  • 2014-04-10
  • 1970-01-01
  • 2015-12-16
  • 2019-06-06
  • 1970-01-01
相关资源
最近更新 更多