加速 Prototype.js 中的 Element.update

拾人牙惠的一篇文章。

剛在大神的部落格看到這篇文章,是說有人寫了一個 JavaScript function -- replaceHTML 用來取代原本 innerHTML 的用法,根據他的實驗,在 15k 個 element 的情況下(create & destroy)可以加速到 50 倍左右。

我自從用了 Prototype.js 為主要的 JavaScript framework 之後,關於 innerHTML 的部份都儘量會用 Element#update 來作,不過這個函式本身也是直接用 innerHTML 來作(當然差別在於它還會 evaluate javascript),所以也蠻好把這個加速方法放進 Prototype.js 裡的,只要找到下列的 code:
[code lang="javascript"]
update: function(element, html) {
html = typeof html == 'undefined' ? '' : html.toString();
$(element).innerHTML = html.stripScripts();
setTimeout(function() {html.evalScripts()}, 10);
return element;
},
[/code]
把其中 $(element).innerHTML 這一行替代成上述文章中的作法就可以了。