深蓝网络

网站建设,程序开发,主机域名,搜索引擎

javascript给网页上的文字自动加上链接

前端,交互 2748 0 2012/01/01

给网页上带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>



上一篇  |  下一篇
发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。