热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->js 
站内搜索:
ie的outerhtml与xhtml不兼容的问题解决
作者:nickey 来源:blog 整理日期:2007-10-23

    IE用一个节点的outerHTML来获得的代码,与xhtml的代码是不兼容的, 比如,标签名是大写,LI标签没有封口等。

    找到一个替换的函数,用来解决这个问题。 

  function  s(h)  {
  h = h.replace( /< (\ /? )([ ^> \ ! \s] + )(. *? ) >/ gi,r);
     /**/ /*
    内部函数
    功能:
    a 将标签名转为小写
    b 为无结束符的标签加入 /
    c 转换无内容属性:disabled="disabled"
     */
    function  r()  {
     var  a = arguments;
     for  ( var  i = 0 ;i < a.length;i ++ )
      a[i] = a[i] ? a[i]:;
    a[ 2 ] = a[ 2 ].toLowerCase();
    a[ 3 ] = a[ 3 ].replace( / ([ ^ \s = ] + )\s *= \s * ([ ^ \s " ]+)/gi,$1= " $ 2 " );
    a[3]=a[3].replace(/(\S+)/gi,function(a0,a1){if (a1.indexOf(=)<0){return a1.toLowerCase()+= " + a1.toLowerCase() + " }else{return a1;}});
    var t=a[2].match(/^(br|hr|input)$/)? "   / " : "" ;//自行添加无结束符的标签名
    return ( " < " +a[1]+a[2]+a[3]+t+ " > " );
  }
  h=h.replace(/<(li|p|dd)(.*?)>([\s\S]*?)(?=<\1)/mgi,r1);//修改这里,增加那些会省略闭合标签的元素
    /*
    内部函数
    功能:
    恢复被浏览器自动删除的结束符(如果是代码不完整导致的结束符缺失可能无法恢复)
    */
  function r1(a0,a1,a2,a3){
    var t= " < " +a1+a2+ " > " ;
    if (a3.match(new RegExp( " < \\ / " +a1, " i " )))
      return t+a3;
    return t+a3+ " </ " +a1+ " > " ;
  }
  return h;
}

相关文章