Linker
by
pmint
2012-12-15 [2012/12/15 01:47:55]
convert plain URL texts to links ※<textarea>の中なども置き換えてしまうので実用不可でした。
@@ -8,18 +8,24 @@
function link(e)
{
- // convert only leaf nodes
var f = false;
- var a = e.innerHTML.replace(/(<p.*?>|<hr.*?>|<w?br.*?>|<(?:.|\n)*>)|((?:https?|data|feed|ftp|mailto|maps|market|skype|sms|tel):[^\s<>]+)/gi, function (m0, m1, m2){ if (m1){ return m1 } else { f = true; return '<a href="' + m2 + '">' + m2 + '</a>'; } });
- if (f){
+ var a = e.innerHTML.replace(
+ /(<p.*?>|<hr.*?>|<w?br.*?>|<(?:.|\n)*>)|((?:https?|data|feed|ftp|mailto|maps|market|skype|sms|tel):[^\s<>]+)/gi,
+ function (m0, m1, m2){
+ if (m1){
+ return m1;
+ }
+ else {
+ f = true;
+ return '<a href="' + m2 + '">' + m2 + '</a>';
+ }
+ });
+
+ if (f)
e.innerHTML = a;
- return;
- }
- else {
- for (var i = 0; i < e.children.length; i++){
+ else
+ for (var i = 0; i < e.children.length; i++)
link(e.children[i]);
- }
- }
}
link(document.getElementsByTagName('body')[0]);
/*
* @title Linker
* @description convert plain URL texts to links
* @include http://*
* @license MIT License
*/
function link(e)
{
var f = false;
var a = e.innerHTML.replace(
/(<p.*?>|<hr.*?>|<w?br.*?>|<(?:.|\n)*>)|((?:https?|data|feed|ftp|mailto|maps|market|skype|sms|tel):[^\s<>]+)/gi,
function (m0, m1, m2){
if (m1){
return m1;
}
else {
f = true;
return '<a href="' + m2 + '">' + m2 + '</a>';
}
});
if (f)
e.innerHTML = a;
else
for (var i = 0; i < e.children.length; i++)
link(e.children[i]);
}
link(document.getElementsByTagName('body')[0]);
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。