在主题上添加风格切换功能 (2)
上回我介绍了如何在主题中简单实现风格切换功能, 但我的主题风格切换和 wpdesigner7 的究竟有什么不同呢? 主要在获取风格的方法 getPreferredStyleSheet 上.
而这个方法什么时候被调用? 在需要获取风格设定的时候, 主题会先去 Cookie 查找上一次使用的风格, 如果找不到 (一般是第一次运行的时候), 就会调用这个方法.
1 2 3 4 5 | window.onload = function(e) { // 页面加载完成时 var cookie = readCookie("style"); // 读取 Cookie var title = cookie ? cookie : getPreferredStyleSheet(); // 获取上一次的风格 setActiveStyleSheet(title); // 重新设定风格 } |
以下是 wpdesigner7 的方法:
1 2 3 4 5 6 7 8 9 10 11 12 | function getPreferredStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { 遍历所有 link 标签 if(a.getAttribute("rel").indexOf("style") != -1 // 找到包含 style 的描述 && a.getAttribute("rel").indexOf("alt") == -1 // 找不到包含 alt 的描述 && a.getAttribute("title") // 找到 title 属性 ) { return a.getAttribute("title"); } } return null; } |
以下是我的处理方法:
1 2 3 4 5 6 7 8 9 10 11 | function getPreferredStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") ) { return a.getAttribute("title"); } } return null; } |
或许你已经注意到了, 少了句代码而已. a.getAttribute("rel").indexOf("alt") == -1 的意思是 "在标签中无法找到带 alt 的描述属性".
wpdesigner7 靠这个来判断获取哪个风格 (非默认风格都添加了属性 rel="alternate stylesheet"), 找到不带该属性的那个风格就立刻返回.
而我的没有用这个属性, 只能将默认的风格放在最前, 找到立刻返回. 也就是说, 每次放最前面的就是它的默认风格.
声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: 在主题上添加风格切换功能 (2)

我个人觉得没必要换主题风格。
经常换一下可以减少视觉疲劳.
你这个系列拖的时间可够长的
收藏了回去调试,(*^__^*) 嘻嘻……
我一直很喜欢自己修改的wpdesign7,下次好好改一下自己用哈哈
我最想知道的是,你那段程序代码怎么加上去的??怎么显示出1.2.3...的?恳请赐教
回复没成功???
spasibo, bolchoe