在主题上添加风格切换功能 (2)

Feb 10th, 2009 Add Comment

上回我介绍了如何在主题中简单实现风格切换功能, 但我的主题风格切换和 wpdesigner7 的究竟有什么不同呢? 主要在获取风格的方法 getPreferredStyleSheet 上.
而这个方法什么时候被调用? 在需要获取风格设定的时候, 主题会先去 Cookie 查找上一次使用的风格, 如果找不到 (一般是第一次运行的时候), 就会调用这个方法.

window.onload = function(e) { // 页面加载完成时
	var cookie = readCookie("style"); // 读取 Cookie
	var title = cookie ? cookie : getPreferredStyleSheet(); // 获取上一次的风格
	setActiveStyleSheet(title); // 重新设定风格
}

以下是 wpdesigner7 的方法:

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

以下是我的处理方法:

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)

  1. http://1.gravatar.com/avatar/5f2123d2aa73ef8a8c6685763a57bf15?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    slm.türkçe tema sizde mevcutmudur.

  2. http://0.gravatar.com/avatar/428674f21630f5b08725b18c6e6b0b9e?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  3. http://1.gravatar.com/avatar/3dd8f3e54beebdb062145488cd596d87?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    回复没成功???

  4. http://1.gravatar.com/avatar/3dd8f3e54beebdb062145488cd596d87?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我最想知道的是,你那段程序代码怎么加上去的??怎么显示出1.2.3...的?恳请赐教

  5. http://0.gravatar.com/avatar/8acec87e6fb1e7d0c0bcda7dc69322fd?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    :oops: 还有表情 哈哈太小看不清楚表情啥意思

  6. http://0.gravatar.com/avatar/8406d089bc81b664a2610b8d214c1428?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我一直很喜欢自己修改的wpdesign7,下次好好改一下自己用哈哈

  7. http://1.gravatar.com/avatar/10b71bd15c0bf316f72e32bb3084c372?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    :arrow: 发觉你的表情很棒啊,是什么插件?

  8. http://1.gravatar.com/avatar/10b71bd15c0bf316f72e32bb3084c372?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    收藏了回去调试,(*^__^*) 嘻嘻……

  9. http://1.gravatar.com/avatar/b19a2eda07d44c4a9e83c8e99046be75?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    你这个系列拖的时间可够长的

  10. http://0.gravatar.com/avatar/eb45221e29efca32ba1092b52ec1a652?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    经常换一下可以减少视觉疲劳.

  11. http://1.gravatar.com/avatar/53c84ee7f1267255fe012a392fd5bf3d?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    我个人觉得没必要换主题风格。