takememo RSSフィード

2005/04/12 Tue

[]URLからリンクを作成 URLからリンクを作成を含むブックマーク URLからリンクを作成のブックマークコメント

http://nontroppo.org/wiki/BookMarklets#logからパクってきた。そのままでは動作しなかったので変更+読みやすくした。

document.addEventListener('load', linkify, false);
function linkify() {
    document.body.normalize();
    search_url(document.body);
}
function search_url(n){
    if (n.nodeType == Node.TEXT_NODE) {
        var r = new RegExp("h?ttps?://[-!#$%&'()=~a-zA-Z0-9@;:+,./?_]+");
        var p = n.data.search(r);
        var s = String(n.data.match(r));
        if (p >= 0) {
            var n1 = n.splitText(p);
            var n2 = n1.splitText(s.length);
            var a = document.createElement("a");
            if (s.charAt(0) != 'h') s = 'h' + s;
            a.href = s;
            a.appendChild(n1);
            n2.parentNode.insertBefore(a, n2);
        }
    } else if (n.tagName != "STYLE" && n.tagName != "SCRIPT" && n.tagName != "A") {
        for (var x, i = 0; x = n.childNodes[i]; ++i)
            search_url(x);
    }
}

UserJSが動作しないときがあるのはなんでだろう?

追記(4/15)

ttpで始まるアドレスに対応したつもりだったが間違ってたので修正。→間違えたので再修正。

なまえなまえ 2007/07/28 16:05 ひとつのテキストノードに複数の URL が列挙されている場合に対応していないのでは?

takeftakef 2007/07/30 06:10 ちょっとわかりにくいですけど、chlldNodesは生きたオブジェクトなので大丈夫なはずです。

2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
Connection: close