Summary
キーワードにマウスカーソルを載せると,複数箇所に出現するキーワードが一斉にハイライトされる大きなページで反応が鈍くなるらしく,途中の処理をキャッシュすることで軽減させている.
これはおもしろい.
JavaScriptのソース (元ソース)
highlightColor = "yellow";
backgroundColor = "white";
var cache;
function initCache () {
cache = new Array();
spans = document.getElementsByTagName('span');
for (i = 0; i < spans.length; i++) {
name = spans[i].className;
if (!cache[name]) {
cache[name] = new Array();
}
cache[name].push(spans[i]);
}
}
function hlclass (name, flag) {
if (!cache) {
initCache();
}
for (i = 0; i < cache[name].length; i++) {
cache[name][i].style.backgroundColor = (flag ? highlightColor : backgroundColor);
}
return true;
}
HTMLのサンプル (元ソース)
<span class="x" onmouseover="hlclass('x', 1)" onmouseout="hlclass('x', 0)">x</span>
<span class="x" onmouseover="hlclass('x', 1)" onmouseout="hlclass('x', 0)">x</span>
<span class="y" onmouseover="hlclass('y', 1)" onmouseout="hlclass('y', 0)">y</span>
<span class="y" onmouseover="hlclass('y', 1)" onmouseout="hlclass('y', 0)">y</span>
Reference
いやなブログ - 2004-10-29http://namazu.org/~satoru/blog/archives/000007.html
via
たつをのChangeLog - 2004-10-29http://chalow.net/2004-10-29.html#2004-10-29-5