Web Frontend Develope, Design, Music, Life——Stay Hungry, Stay Foolish~

让javascript不阻断网站

我们知道如果把javascript放在外联标签里面不管是在ie67还是ff都会阻断网站的下载,虽然ie8, safari4以及chrome浏览器已经让Javascript并行下载,但依然还在阻断图片和iframe的下载,详情请看steve souders的这篇文章“Loading Scripts Without Blocking” ,其中也介绍了六种可以让javascript不阻断网站的方法:

    * XHR Eval - Download the script via XHR and eval() the responseText.
    * XHR Injection - Download the script via XHR and inject it into the page by creating a script element and setting its text property to the responseText.
    * Script in Iframe - Wrap your script in an HTML page and download it as an iframe.
    * Script DOM Element - Create a script element and set its src property to the script’s URL.
    * Script Defer - Add the script tag’s defer attribute. This used to only work in IE, but is now in Firefox 3.1.
    * document.write Script Tag - Write the <script src=”"> HTML into the page using document.write. This only loads script without blocking in IE.

其中通过创建一个script标签并且将其src设为script的URL是一个比较常见的技巧,并且当script下载完成后给其加一个callback函数,兼容ie和ff的代码如下: 继续阅读 »

2009/07/13Life

0 Comments

左岸读书——半边碗

在麦田音乐网的群邮件里看到了这篇文章,感觉蛮有意义的。

转:

一条乡村的小路上,有一眼清澈的山泉,泉边有半边碗用来让过路人在泉眼里舀水喝的。村人上街或者串亲戚走访路过山泉,便可停下蹲在泉眼边喝水解渴。

  过去,泉边连半边碗也没有,人们就用手捧水喝,或用树叶折叠成碗状舀水喝。山泉边有些树木和花草,景色宜人,过路人如果时间不紧,还在泉边喝水和歇息,等到养足了精神,才往前赶路。所以,这眼路边山泉是人们流连忘返的地方。至于那个半边碗,当时人们感觉不出它的美和丑,脑海里也留不下什么印象。

  只是到了有一天,一只非常漂亮的瓷碗的出现和丢失,才让人们对半边碗产生了许多的联想和感慨。同时,人们也不知是什么时候,一只漂亮的瓷碗不声不响地在山泉边留下了,代替了那个他们使用多年的半边碗。但大家都知道,是因为泉水太甘甜,泉边的风景太美丽,便有人认为那个半边碗与泉水和泉水边的风景不相匹配,认为只有换上好瓷碗后,泉水边才会更加有情趣。但不管怎么说,一只漂亮的瓷碗不知不觉地留在了泉边。

  然而,让人们想不到的是,没过几天时间,那只漂亮的瓷碗不翼而飞。好碗丢失了,半边碗又被扔掉,人们又只好用树叶或用手捧水喝,相当不习惯。所以,又有人买来一只好瓷碗,放到了泉水边。这只瓷碗的命运,与前一只瓷碗的命运没有两样。时间不长,好瓷碗再次丢失。

  这时候,人们才想起来,半边碗除了在山泉边上,在其他地方是没有用处的,而漂亮的瓷碗,它放在哪里都能产生价值和作用。人们都清楚了,再买好碗放在泉边,已经没有必要,它的好只会给路人带来更大的不便。而那重新捡回来的半边碗,却一直沿用到最后,给路人带来莫大的帮助

  人生在世,好的东西不一定是合适的,而合适的东西也不一定就是好的。

通过HTML组件存储数据

我们在编写JS脚本的时候有时会给HTML的标签加一些属性,如

element.addEventListener(’click’, function(e){
this.rel += ‘ clicked’ + ‘(’ + e.clientX + ‘ ,’ + e.clientY + ‘)’;
});

这样可能就是侵入javascript的了,尽管HTML5里面加了一些属性比如data-remote=true是判断是否使用ajax来加载的,这对后端工程师可以酌情采用。

另外James Padolsey又给出了另一种方法,就是把JSON数据放到注释里面,写了一个commentData函数,源码如下: 继续阅读 »

返回顶部