从EXT中分离出来的,兼容FF/IE的insertAdjacentHTML方法 
 添加控件
方法名称:insertHtml(where,el,html) 
 
参数介绍: 
where:插入位置。包括beforeBegin,beforeEnd,afterBegin,afterEnd。 
el:用于参照插入位置的html元素对象 

html:要插入的html代码

  1. function insertHtml(where, el, html){   
  2.         where = where.toLowerCase();   
  3.         if(el.insertAdjacentHTML){   
  4.             switch(where){   
  5.                 case "beforebegin":   
  6.                     el.insertAdjacentHTML('BeforeBegin', html);   
  7.                     return el.previousSibling;   
  8.                 case "afterbegin":   
  9.                     el.insertAdjacentHTML('AfterBegin', html);   
  10.                     return el.firstChild;   
  11.                 case "beforeend":   
  12.                     el.insertAdjacentHTML('BeforeEnd', html);   
  13.                     return el.lastChild;   
  14.                 case "afterend":   
  15.                     el.insertAdjacentHTML('AfterEnd', html);   
  16.                     return el.nextSibling;   
  17.             }   
  18.             throw 'Illegal insertion point -> "' + where + '"';   
  19.         }   
  20.   var range = el.ownerDocument.createRange();   
  21.         var frag;   
  22.         switch(where){   
  23.              case "beforebegin":   
  24.                 range.setStartBefore(el);   
  25.                 frag = range.createContextualFragment(html);   
  26.                 el.parentNode.insertBefore(frag, el);   
  27.                 return el.previousSibling;   
  28.              case "afterbegin":   
  29.                 if(el.firstChild){   
  30.                     range.setStartBefore(el.firstChild);   
  31.                     frag = range.createContextualFragment(html);   
  32.                     el.insertBefore(frag, el.firstChild);   
  33.                     return el.firstChild;   
  34.                 }else{   
  35.                     el.innerHTML = html;   
  36.                     return el.firstChild;   
  37.                 }   
  38.             case "beforeend":   
  39.                 if(el.lastChild){   
  40.                     range.setStartAfter(el.lastChild);   
  41.                     frag = range.createContextualFragment(html);   
  42.                     el.appendChild(frag);   
  43.                     return el.lastChild;   
  44.                 }else{   
  45.                     el.innerHTML = html;   
  46.                     return el.lastChild;   
  47.                 }   
  48.             case "afterend":   
  49.                 range.setStartAfter(el);   
  50.                 frag = range.createContextualFragment(html);   
  51.                 el.parentNode.insertBefore(frag, el.nextSibling);   
  52.                 return el.nextSibling;   
  53.             }   
  54.             throw 'Illegal insertion point -> "' + where + '"';   
  55.     }  
posted on 2008-11-19 14:25  cqsar  阅读(307)  评论(0编辑  收藏  举报