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);
})();
処理概要
- frameごとに以下を繰り返す。
- document.body内のタグを再帰的にチェックし、テキストノードであればURLに印をつける。
- document.body.innerHTMLを置換し印の付けられたURLをリンク化する。
このコードは改変や配布含め自由に使っていただいてかまいません。
不具合などありましたら、コメント欄からご連絡ください。
[amazon]4873113040[/amazon]
ピンバック: URLをリンク化するjQueryプラグインとそのブックマークレット | TipsZone