Archive for 九月, 2007

2007 - 09 - 27

_blank开新窗口不符合标准?

Published by 朝心 under 页面制作

我们要在新窗口中打开链接通常的做法是在链接后面加target=”_blank”,我们采用过渡型的DOCTYPE(xh
tml1-transitional. dtd)时没有问题,但是当我们使用严格的DOCTYPE(xhtml1-strict.dtd)时,这个方法
将通不过W3C的校验,会出现如下错误提示:

“there is no attribute target for this element(in this HTML version)”

原来在HTML4.01/XHTML1.0/XHTML1.1严格DOCTYPE下,target=”_blank”、target=”_self”等等语法都是
无效的,我们只能通过JavaScript来变通实现。

有朋友问为什么不允许使用target=”_blank”?这个属性很方便啊。呵呵,不知道W3C的专家们是怎么想
的,据我所知,主要是“易用性、友好性”的问题,因为老外觉得不经过用户同意,没有明确提示就打开一
个新窗口是不礼貌的。先不管这个取消是否合理,我们来看看解决办法。

rel属性

HTML4.0增加了一个新属性:rel,这个属性用来说明链接和包含此链接页面的关系,以及链接打开的目
标。rel有许多的属性值,比如next、previous,、chapter、section等等。我们要使用的就是rel=”externa
l”属性。原来这样写的代码:

<a href=”document.html” target=”_blank”>
打开一个新窗口</a>

现在要写成这样:

<a href=”document.html” rel=”external”>打开一个
新窗口</a>

这是符合strict标准的方法。当然还必须配合一个javascript才有效。

javascript

完整的代码JS如下:

function externallinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}
window.onload = externallinks;

你可以把它保存成一个.js文件(比如external.js),然后通过外部联接方法调用:

class=code><script type=”text/javascript” src=”external.js”></script>

就是这样。

3 responses so far

2007 - 09 - 26

关于reflow[转]

Published by 朝心 under 页面制作

去听了牛人 dbaron 的一个 Web Page Layout/Display in Mozilla 讲座( via )。讲的东西对我一个只会HTML, CSS和JavaScript的人来说很底层,所以效果也比较“和谐”,只是大致了解了mozilla的CSS渲染源码分布位置和渲染流程而已。

讲座提到了reflow(如何翻译呢?又是一个问题)这个东东。之前对reflow有所闻,能经常从某些大牛的幻灯中提到,提高页面渲染的性能,需尽量避免reflow. 那么reflow是什么东西呢?它又是如何影响页面性能的?事后去问了一下dbaron(呵呵,我口语彻底不行,加上心理素质,最后是把问题写下来给他看),豁然开朗也。

在CSS规范中有一个渲染对象的概念,通常用一个盒子(box, rectangle)来表示。mozilla通过一个叫frame的对象对盒子进行操作。frame主要的动作有三个:

  • 构造frame, 以建立对象树(DOM树)
  • reflow, 以确定对象位置,或者是调用mozilla的Layout(这里是指源码的实现)
  • 绘制,以便对象能显示在屏幕上

总的来说,reflow就是载入内容树(在HTML中就是DOM树)和创建或更新frame结构的响应的一种过程。

要提高页面性能,其实就是避免reflow的开销。那么,有哪些方面是需要reflow的呢?比如,未指定图片宽高的话,图片的载入会使页面reflow, 因为要根据图片宽高来更新frame。这里就有一个提高页面性能的小技巧:如果事先能够确定图片宽高的话,最好在HTML里写上。

在编写一些常见的动态效果时,一般使用CSS的display来切换可见性。很不幸,这也会产生reflow. 把元素置为display:none,相当于把这个元素的frame销毁了,再置回非none时,需要重新构造frame,这就产生了reflow. 而另外一个切换可见性的属性visibility则不存在reflow问题,置为visibility:hidden的元素的frame并没有销毁,需要显示的时候其实就是一个绘制(上面提到的动作第三步)过程而已,没有reflow,因此效率会更高。如果你看过一些JavaScript库/框架的源码,会发现它们大量使用visibility而不是display,道理应该如此

No responses yet

2007 - 09 - 05

[转]牛B的MSN签名

Published by 朝心 under 闲来无事

  1、我就像一只趴在玻璃上的苍蝇,前途一片光明,而我却找不到出路。

  2、挤在北京,给首都添麻烦了……

  3、心中充满爱,看天下美女都是情人。

  4、台湾一日不收复,我一日不过4级!

  5、啊哦厄依乌迂波坡摸佛得特呢勒哥科喝机奇西知吃尸日资雌思

  6、好好活着,因为我们会死很久很久……

  7、如果你看到面前的阴影,别怕,那是因为你的背后有阳光。

  8、狂欢是一群人的孤单……

  9、上帝给了我们七情六欲,我们却把它们变成了色情和暴力。

  10、帅有个屁用!到头来还不是被卒吃掉!

  11、让房价涨的再猛烈一些吧!

  12、谁能对偶的感情就像对人民币一样忠诚?

  13、流血了……会不会很疼?

  14、他们说我是BT,让我去做CT,结果我是ET。

  15、做一个徘徊在牛A和牛C之间的人。

  16、白天瞎JB忙,晚上JB瞎忙。

  17、我爱你,并不是因为你是谁,而是在你面前时,我是谁!

  18、一定是我的帅害S了我!

  19、生是她的人,死是她的吉祥物。

  20、如果太阳不出来了,我就不去上班了;如果出来了,我就继续睡觉!

  21、老子误吃了一瓶“乌鸡白凤丸”。这下可好,每个月都要流几天的鼻血。

  22、瞎子点灯,或许不是一种愚蠢,亦或是一种智慧,甚至气度……

  23、24K纯爷们!纯的!

  24、你真是个地道的美人啊。就是说你只有在地道里才算美人,因为地道里没灯。

  25、蹲在厕所里,想着500万……

  26、写什么写,就是写了你会信么?什么?你真信,你怎么那么幼稚啊!

  27、早知道前世的五百次回眸,能换来今生的与你相遇。我就该把头甩断,来换这一辈子与你相遇。

  28、彪悍的人生不需要解释。

  29、我的爱人都叫我第三者!

  30、天啦,我的衣服又瘦了!

  31、青春就像卫生纸。看着挺多的,用着用着就不够了。

  32、我一发怒,冬天就到了;冬天一发怒,我就变成秋裤男了。

  33、爷爷都是从孙子走过来的……

  34、你要是嫁人就先嫁给别人然后再嫁给我,带着他的存款领着他的妹妹,开着那宝马来。

  35、爱像圆周率,无限不循环……

  36、琴棋书画不会,洗衣做饭嫌累。

  37、一山不能容二虎,除非一公和一母。

  38、诚征小MM,共同来灌水;我灌长江头,君灌长江尾。

  39、水能载舟,亦能煮粥!

  40、也许似乎大概是,然而未必不见得。

  41、我喝酒是想把痛苦溺死,但这该死的痛苦却学会了游泳。

  42、不要等到人人都说你丑时才发现自己真的丑。

  43、如果你不能为你心爱的女人穿上嫁衣,请停下你解她衣扣的手。

  44、堕落并不可怕,可怕的是当一个人堕落时非常清醒!

  45、以前,脱下内裤看屁股;现在,拔开屁股看内裤。因为我穿的丁字裤。

  46、送你一份有史以来粪量最重的礼物,你一定会大吃一斤。

  47、我最喜欢的日子:1月31日;我最讨厌的日子:12月1日。

  48、夏天来了,天气热了,一群SB往北飞,一会儿排成个S字,一会儿排成个B字……

  49、机会就像是阴JIN,只要握在手里,就会越来越大。

  50、你看得见我打在屏幕上的字,却看不到我掉在键盘上的泪……

  51、我是一条赤身裸体的蜈蚣!

  52、不对,就是碗是铁的,里边没饭你吃啥去?

  53、承诺,就像“X你妈”一样,经常说,但是很难做到。

  54、时间就像乳沟,只要挤一挤总还是有的!

  55、男人靠征服世界来征服女人!女人靠征服男人来征服世界!

  56、现在开始爱你晚不晚?

  57、我死了,但是在烈火中我又站起来了,你猜是涅磐,还是尸变?

  58、我对生命无悔,奈何心中有愧,只要不死……誓将RMB一赚到底!

  59、活着,以死的姿态……

  60、我悄悄的来,悄悄的走,挥一挥匕首,不留一个活口。

  61、如果每个女朋友用一个字来代替的话,我的情史可以写一部长篇小说了。

  62、最浪漫的三个字不是“我爱你”,而是“在一起”。

  63、叶子的离去,是树的不挽留,还是风的追求?

  64、我们虔诚的祈祷:年终的奖金只多不少;领导动情的承诺:新年的工作只少不多。

  65、爱情是骗来的,感情是睡来的。

  66、搞好工作,教好学生,做好网站,当好写手,活好人生……

  67、好想有个太太,和我谈心说爱。现实却很无奈,让我仍需等待!

  68、都是水何必装纯,都是狼何必装羊?

  69、带翅膀的不一定是天使,我妈说,那是鸟人。

  70、我是一只小小小小鸟,想要飞却飞也飞不高……咦?原来没长毛。

  71、有一种沉默叫霸气,有一种内敛叫个性,有一种简单叫深遂,有一种不屑叫自我。

  72、小时候老师给我讲“帅哥”的定义,我百思不得其解,后来同位给我拿出了一面镜子。OY!突然间我明白了。

  73、也因寂寞难耐,谈过几次恋爱。谁知屡战屡败,轻轻松松被踹!

  74、21世纪,什么最重要——我!

  75、错过一个人最可怕的方式就是:坐在她的身旁,你却知道永远都不会拥有她。

  76、生活真他妈好玩,因为生活老他妈玩我。

  77、我床上的不知道是谁媳妇,我媳妇不知道在谁的床上!

  78、以后不要在我面前说英文,OK?

  79、去他妈的爱情!

  80、大家都说我是个演员,是因为我一看见漂亮MM眼就圆……

  81、林子大了,什么鸟都有。社会复杂了,什么人都有了。我是哪一类人呢,我正琢磨着呢?

  82、有钱男子汉,没钱汉子难!

  83、永远都不要停止微笑,即使是在你难过的时候,说不定有人会因为你的笑容而爱上你。

  84、世界上最遥远的距离不是生与死的离别,而是当我站在你面前你却不知道:我爱你!

  85、穿别人的鞋,走自己的路,让他们找去吧。

  86、我故意学习,故意工作,故意生活,故意活得像个人!

  87、长大了要娶唐僧做老公,想宠幸就宠幸,不想玩了就把他吃掉。

  88、从猴子变成人需要成千上万年,从人变回猴子只用一瓶酒。

  89、是你太坏!不是我不乖!

  90、我可能是太平凡了,没有个性!

  91、据说世界上惟一能维持永恒爱情的动物是刺猬——因为刺猬永远不可能太接近。

  92、网上越嚣张,网下越善良。

  93、在你没上线的时候,我总会看着你的资料发呆。

  94、爱情就像两个拉着橡皮筋的人,受伤的总是不愿意放手的那一个!

  95、许多梦想被现实拿来充饥。

  96、我叫锄禾,你能叫当午吗?

  97、我把硬币抛向空中:如果正面朝上,就上MSN,如果背面朝上,就上QQ,如果硬币立起来,我就去自习。

  98、昨天看到一个漂亮女孩,晚上想了她很久,早上就不记得他是什么样了,听说偶这叫一夜情。唉!

  99、人生重要的不是所站的位置,而是所朝的方向。

  100、每天早上起床都要看一遍“福布斯”富翁排行榜,如果上面没有我的名字,我就去上班……

No responses yet

2007 - 09 - 04

无限级展开2级菜单

Published by 朝心 under 页面制作

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml“>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta name=”Author” content=”[Powered by DengJianCheng | 21DEKE.COM | 0701]” />
<meta http-equiv=”imagetoolbar” content=”no” />
<title></title>

<script type=”text/javascript”>
<!–
/*点击即可展开下一级*/
function MenuToggle(e)
{
   aTags = new Array(’ul’,'div’);/*可添加任何块元素*/
   oTargetArray = new Array();
   oParent = e.parentNode ;
     for(i = 0 ; i < aTags.length; i++)
  {
     oTargetArray.push(oParent.getElementsByTagName(aTags[i]));
 }
  
   for (i = 0 ; i < oTargetArray.length;i++)
   {
     oTarget = oTargetArray[i];
     // alert(oTarget[0].tagName);
    if(typeof oTarget[0] != ‘undefined’)
   {
  
  if(oTarget[0].style.display != ‘block’  )
   oTarget[0].style.display = ‘block’;
   else
   oTarget[0].style.display = ‘none’;
   return false;
   }
 

return true;
}
–>
</script>

</head>
<body>

 <ul>
 <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是虚拟主机?</a>
  <ul>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是JMB?</a>
   <div style=” display:none;”>123</div>
  </li>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是国际域名?</a>
   <div>123</div>
  </li>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是虚拟主机?</a></li>
  </ul>
 </li>
 <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>由于把一台机器的资源分配给若干台虚拟主机,每台虚拟主机的性能是否会下降?</a>
  <ul>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是JMB?</a></li>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是国际域名?</a></li>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是虚拟主机?</a></li>
  </ul>
 </li>
 <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>德科科技的服务器托管在什么地方,硬件配置如何? </a>
  <ul>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是JMB?</a></li>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是国际域名?</a></li>
  <li><a href=”#” mce_href=”#”  onclick=”MenuToggle(this);return false;”>什么是虚拟主机?</a></li>
  </ul>
 </li>
 <li><a href=”#” mce_href=”#”>如何选购虚拟主机?</a></li>
 <li><a href=”#” mce_href=”#”>什么网站需要数据库?</a></li>
 <li><a href=”#” mce_href=”#”>100M的网页空间能存放多少东西?</a></li>
 <li><a href=”#” mce_href=”#”>租用虚拟主机后怎样上传网页?</a></li>
 <li><a href=”#” mce_href=”#”>使用虚拟主机有什么限制?</a></li>
 </ul>
   
</body>
</html>

No responses yet