WEB开发网
开发学院网页设计JavaScript IE中实现HTMLElement 阅读

IE中实现HTMLElement

 2010-09-14 13:24:07 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 在DOM标准中,每个HTML元素都是继承自HTMLElement,IE中实现HTMLElement,比如有如下代码: window.onload=function(){alert(document.bodyinstanceofHTMLElement);}会弹出true,表明了HTML的

本文示例源代码或素材下载

在DOM标准中,每个HTML元素都是继承自HTMLElement。比如有如下代码:

window.onload=function(){
  alert(document.bodyinstanceofHTMLElement);
}

会弹出true,表明了HTML的元素是HTMLElement的实例

实际上HTMLElement继承自Element,Element继承自Node,如图:

IE中实现HTMLElement

知道了HTMLElement这个类,就可以很方便的用Prototype来扩展每个HTML元素的方法或者属性。

但是在IE中将这个类隐藏了,不能通过代码访问。为了达到同样的目的,可以通过如下代码来进行修复:

varDOMElement={
  extend:function(name,fn){//添加名称为name的方法fn
  
    if(!document.all)//除了ie而外的浏览器都能够访问到HTMLElement这个类
      eval("HTMLElement.prototype."+name+"=fn");
    else{
      //  IE中不能访问HTMLElement这个类
      //  为了达到同样的目的,必须重写下面几个函数
      //  document.createElement
      //  document.getElementById
      //  document.getElementsByTagName
      //  这几个函数都是获得HTML元素的方法
      //  修改这些方法,使得通过这些方法获得的每个元素拥有名称为name的方法fn
      var_createElement=document.createElement;
      document.createElement=function(tag){
        var_elem=_createElement(tag);
        eval("_elem."+name+"=fn");//_elem[name]=fn;也可以达到同样的目的
        return_elem;
      }
      var_getElementById=document.getElementById;
      document.getElementById=function(id){
        var_elem=_getElementById(id);
        eval("_elem."+name+"=fn");
        return_elem;
      }
      var_getElementsByTagName=document.getElementsByTagName;
      document.getElementsByTagName=function(tag){
        var_arr=_getElementsByTagName(tag);
        for(var_elem=0;_elem<_arr.length;_elem++)
          eval("_arr[_elem]."+name+"=fn");
        return_arr;
      }
    }
  }
};

1 2  下一页

Tags:IE 实现 HTMLElement

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接