javascript 字串自动添加 URL/EMAIL 链接 By shawl.qiu
2006-12-13 02:52
591 查看
javascript 字串自动添加 URL/EMAIL 链接 By shawl.qiu
说明:其实关于自动附加 URL/EMAIL 链接我至少写了不少于十个这样功能的代码了.
直到最近学JS小成, 弄了一个比较完美的DOM解决方法, 倒是可以无误附加链接.
但是问题总是会出现的, 虽然用DOM方法可以无误附加链接, 但是却把缩进格式给丢了....
这个是致命的, 所以就重写了一个不会丢失缩进的啰.
这个是直接进行字符串处理的, 应该有可能发生错误, 但是出错率会相当低.
目录:
1. DOM 附加 URL/EMAIL 链接
2. 字符串附加 URL/EMAIL 链接
shawl.qiu
2006-12-13
http://blog.csdn.net/btbtd
1. DOM 附加 URL/EMAIL 链接
<script type="text/javascript">
//<![CDATA[
onload=function(){
var o_=document;
fDomAtcLink(o_.body, o_);
}
//sqMethod.attachlink(o_.body, o_)
function fDomAtcLink(obj, dcu){
var temp, str='', span;
for(var i=0, j=obj.childNodes.length; i<j; i++){
temp=obj.childNodes[i];
if(temp.nodeType==3){
if(temp.parentNode.nodeName=='A')return false;
if(temp.data.indexOf('http')<0&&temp.data.indexOf('ftp')<0&&
temp.data.indexOf('@')<0)continue;
span=dcu.createElement('span');
str=temp.data.replace(//&/g,'&').replace(/</g,'<').replace(/>/g,'>');
//str=sqMethod.encode(temp.data);
str=str.replace(/(ht|f)tp(s|)/:////[/-/w.:]+(//[^ /n/r/'/"]+|)/gi,function(match){
return '<a href="'+match+'" class="sqUrl">'+match+'</a>'; } );
str=str.replace(/[/w.]+@[/w/-.]+(//[^ /n/r/'/"]+|)/gi,function(match){
return '<a href="mailto:'+match+'" class="sqMail">'+match+'</a>'; } );
span.innerHTML=str;
obj.replaceChild(span, temp);
}
if(temp.nodeType==1)arguments.callee(obj.childNodes[i], dcu);
} temp=span=null; // shawl.qiu script
}
//]]>
</script>
2. 字符串附加 URL/EMAIL 链接
<script type="text/javascript">
//<![CDATA[
onload=function(){
var html=document.body.innerHTML;
document.body.innerHTML=fPadUrl(document.body.innerHTML);
document.body.innerHTML=fPadEmail(document.body.innerHTML);
}
function fPadUrl(str){
if(!str||str.replace(//s+/,'').length<0)return false;
var re=new RegExp('([//s//S]|)((ht|f)t(p|ps)/:////.*?)(//s|/ /;|/>/;|/</;|'+
'[/'/"<>]|/&/#34/;)','gi');
return str.replace(re,
function($1,$2,$3,$4,$5,$6){
if(//'|/"|/=|/= /.test($2))return $1;
$3='<a href="'+$3+'" class="sqLink">'+$3+'</a>';
return $2+$3+$6;
}
); // shawl.qiu script
}
function fPadEmail(str){
if(!str||str.replace(//s+/,'').length<0)return false;
var re=new RegExp('(mailto/:|/>|)([//w/./-]+)/@(.*?)'+
'(//s|/ /;|/>/;|/</;|[/'/"<>]|/&/#34/;)','gi');
return str.replace(re,
function($1,$2,$3,$4,$5){
if(/mailto|>/.test($2))return $1;
$3='<a href="mailto:'+$3+'@'+$4+'" class="sqLink">'+$3+'@'+$4+'</a>';
return $2+$3+$5;
}
); // shawl.qiu script
}
//]]>
</script>
相关文章推荐
- Javascript 小工具, StringToArray(字串转数组) By shawl.qiu
- JavaScript实现url地址自动检测并添加URL链接示例代码
- JavaScript实现http地址自动检测并添加URL链接
- Javascript url 编码算法(utf) by shawl.qiu
- JavaScript实现http地址自动检测并添加URL链接
- JavaScript实现http地址自动检测并添加URL链接
- Javascript url 解码算法(utf-8) by shawl.qiu
- JavaScript实现url地址自动检测并添加URL链接示例代码
- 正则表达式自动给 email url添加链接
- Javascript 动态添加表格行(Tr),表格单元(Td) By shawl.qiu 2007-9-7
- javascript utf-8 url 编码 之 纯算法 解码 by shawl.qiu 2007-9-24
- Javascript 小工具, fCoper(按字串长短排序) By shawl.qiu
- Javascript: 弹出窗口一例 By shawl.qiu
- 2006-5-7 ASP VBSCRIPT 正则表达式之 替换 URL 与 EMAIL 地址为热链接 By Stabx
- javascript自动给文本url地址增加链接的方法分享
- 枚举 javascript 常用对象方法 By shawl.qiu
- http地址自动检测并添加URL链接
- php正则自动给 URL添加链接,并添加nofollow属性
- Javascript 单数组实现列表框两级联动三级联动 By shawl.qiu