javascript给网页上的文字自动加上链接
给网页上带URL格式的文字自动加上<a href="XXX">的链接。
思路是先对整个DOCUMENT过一遍,跳过MATE,JS,CSS等上的字符串,用正则表达式对匹配URL文字,然后替换掉空格回车等字符,加上超级链接的标签。URL地址自动添加的实现的关键点就是检测与替换。
代码如下:
<script type="text/javascript"> //自动加链接 //<![CDATA[ var reg=/(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g; var reg2=/^\s+(.*?)\s+$/gi; onload=function(){var o_=document;fDomAtcLink(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=str.replace(reg,function(match){ return '<a href="'+ match +'" class="sqUrl">'+ match +'</a>'; } ); str=str.replace(reg2,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; } //]]> </script>