URLをリンク化するブックマークレット


2NNを利用していて2chを普通のブラウザで見る場合など、ページ内のURLを直リンクに直したいことがあります。そんなときに役立つ「URLをリンク化」するブックマークレットがStatic Flowerで紹介されていたので、勉強を兼ねて、例外処理の追加など自分好みにカスタマイズしてみました。

jQuery を利用して書き直した最新版はこちら

機能

WEBページ内に表示されているURLをそのURLへのリンクに変換します。
先頭の h が省略されたURLなどもURLと解釈し、リンク化します。
例)
ttp://example.com/
tps://example.com/

以下のブラウザで動くことを確認しています。
: Internet Explorer (8.0)
: Firefox (3.6)
: Opera (10.6)
: Chrome (6.0)
: Safari (5.0)

使い方

以下のリンクをクリックするとURLがリンク化されます。
お気に入りになどに登録して使ってください。
URLのリンク化

ソースコード

http://b.tipszone.jp/url2link.js

Last update: 2010-09-24

(function() { // Mark URLs // Process tags recursively. function markURL(n) { if (0 != n.childNodes.length) { for (var i = 0; i < n.childNodes.length; i++) { // 'SCRIPT' tag is not target.(Opera treats them.) if ('SCRIPT' != n.childNodes[i].tagName) { markURL(n.childNodes[i]); } } } else if (3 == n.nodeType) { // Targets are URLs in text nodes. // Add letter "0x1a" before URL. n.nodeValue = n.nodeValue.replace( /(?:h?t)?(tps?:\/\/[^ \t\n <>"'))])/gi, '\x1aht$1'); } }

// Convert URL to link in parametric window w.
url2link = function(w) {
    // Skip process if content of window w is frameset.
    // (On Opera, contents are not displayed when update the innerHTML of
    // a frameset.(2010-03-11))
    b = w.document.body;
    if (!b.innerHTML.match(/<frame/i)) {
        markURL(w.document.body);
        b.innerHTML = b.innerHTML.replace(
            /\x1a(https?:\/\/[^ \t\n <>"'))]+)/gi, '<a href="$1">$1</a>');
    }
}

// Process frames recursively.
url2link_r = function(w) {
    for (var i = 0; i < w.frames.length; i++) {
        // A error sometime occurs when iframe is CGI.
        // Same Origin Policy error occurs when frame's src is different from
        // current domain.
        try {
            url2link_r(w.frames[i]);
        } catch (e) {}
    }

    // If iframe is used, the both previous and following processes are
    // necessary.
    url2link(w);
}

url2link_r(window);

})();

処理概要

  1. frameごとに以下を繰り返す。
  2. document.body内のタグを再帰的にチェックし、テキストノードであればURLに印をつける。
  3. document.body.innerHTMLを置換し印の付けられたURLをリンク化する。

このコードは改変や配布含め自由に使っていただいてかまいません。
不具合などありましたら、コメント欄からご連絡ください。

[amazon]4873113040[/amazon]

カテゴリー: 記事 タグ: , , パーマリンク

1 Response to URLをリンク化するブックマークレット

  1. ピンバック: URLをリンク化するjQueryプラグインとそのブックマークレット | TipsZone

コメントを残す