拥抱 CSS 裸奔节,用 JavaScript 强制脱衣

CSS 裸奔节
很早就有人 Twitter 说今天是 CSS 裸奔节,于是…

CSS Naked Day 的来历

CSS Naked Day,也称 CSS 裸奔节或 CSS 裸奔日。

在裸奔节这天,参加裸奔节的Blog 将会去除页面上所有的 CSS 样式和广告裸奔整整一天,通过这个节日来重视 CSS 的重要性.当然你的网站如果是用 table 来布局的话这个节日对你来说并不是很合适.在2006年有将近800个国际知名网站参与这个节日.而今年CSS Naked Day将由之前的24小时改为48小时!

CSS Naked Day 的目的

推动Web标准、提倡简洁为美、使用正确的 (x)html 语义标记、良好的层次结构。暂时把页面设计抛弃,直接展示<body>内容!

历届CSS Naked Day的举办时间

第一届 CSS 裸奔节:2006年4月5日

第二届 CSS 裸奔节:2007年4月5日

第三届 CSS 裸奔节:2008年4月9日

第四届 CSS 裸奔节:2009年4月9日

Via

你可以前往官方网站查看更多的介绍以及了解如何加入这个活动。

然后,回到本文的重点。因为我的博客很多时候都是处在调试中的,并且很多插件诸如 Simple Tags 是直接在标签里给元素加上 CSS 的,所以如果想要“裸奔”光是去除 .css 文件是远远不够的,那么有没有一种强制的方法呢?我昨晚就在想这样一种方法。于是被我想到了。也就是本文介绍如何 “强制脱衣” ,也就是教你如何强制去除网站的 CSS

实现原理:众所周知,CSS 调用有三种方法,一种是 link 方式,一种是 <style></style> 包裹方式,最后一种就是直接且暴力的 style=”” 方式,通过 Javascript 代码,强制禁用 type=”text/css” 的 link 或者 让 link 链接 css 的 href=”” 为空,且让 <style></style>
被清除或者禁用,且让 style=”” 为空 或者去除。

这里提供两种方法,一种是最普通的 Javascript 来实现,另外一种是通过目前的最流行的 Javascript 库 jQuery 来实现。

第一种(普通版):

<script type="text/JavaScript">	
// 用style方式引用的css
var style=document.getElementsByTagName('style');
var s='Style:' + style.length;
for (i=0; i<style.length; i++)
{
    /*s += style.item(i) + '|';*/
    style.item(i).disabled=true;
}
 
// 用link方式引用的css
var link = document.getElementsByTagName('link');
s += 'Link:' + link.length;
for (i=0; i<link.length; i++)
    if ('text/css' == link.item(i).type)
        {
            /*s += link.item(i).href + "|\\n";*/
            link.item(i).disabled=true;
        }
 
// 任意对象的style=""
var obj = document.getElementsByTagName('body').item(0).childNodes;
var obj = document.getElementsByTagName('*');
s += 'Obj:' + obj.length;
for (i=0; i<obj.length; i++)
{   
    obj1 = obj.item(i);
    if (obj1.attributes.getNamedItem('style'))
    {
        s += obj1.nodeName + obj1.attributes.getNamedItem('style').value + "\\n";
        obj1.attributes.getNamedItem('style').value = "";
    }
}
</script>

只需将以上这段 JS 代码插入你的网页中即可。

接着是第二种(jQuery版)

<script type="text/JavaScript">		
$(document).ready(function(){
	// 用link方式引用的css
	$("link").attr("type", function() { 
		if ($(this).attr("type") == "text/css")
			$(this).attr("href","");
	}); 
 
	// 任意对象的style=""
		$("*").removeAttr("style");
 
	// 用style方式引用的css
	$("style").remove();
});
</script>

如果你的网站启用了 jQuery 库的话,那么毫不犹豫地用第二种吧,你看代码是何其简洁啊!

最后祝大家裸奔愉快!