クロスブラウザでRangeオブジェクト扱う3

はてなスターの引用はどんな実装かな?
とHatenaStar.js眺めてたら、引用した文字列と同じ文字列全部がハイライトされる仕様なのね。そうそう重複しないだろうから、こういう割り切ったのもありだと思う。


テキストノードだけ収集するのに、よさげなコード発見(HatenaStar.js 1381行〜1394行)
始めに、全テキストノード収集しとくのはありだな。DOM RangeならcommonAncestorContainerをdocument.bodyの代わりに渡せるのに。

(function(node, parent) {
    if (isIE && parent && parent != node.parentNode) return;
    if (node.nodeType == 3) {
        c.textNodes.push(node);
        texts.push(node.nodeValue);
        c.textNodePositions.push(pos);
        pos += node.nodeValue.length;
    } else {
        var childNodes = node.childNodes;
        for (var i = 0; i < childNodes.length; i++) {
            arguments.callee(childNodes[i], node);
        }
    }
})(document.body);


今は、コモンズ・マーカーのソース読んでる。