IE中实现HTMLElement
2010-09-14 13:24:07 来源:WEB开发网本文示例源代码或素材下载
在DOM标准中,每个HTML元素都是继承自HTMLElement。比如有如下代码:
window.onload=function(){
alert(document.bodyinstanceofHTMLElement);
}
会弹出true,表明了HTML的元素是HTMLElement的实例
实际上HTMLElement继承自Element,Element继承自Node,如图:
知道了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;
}
}
}
};
Tags:IE 实现 HTMLElement
编辑录入:爽爽 [复制链接] [打 印]赞助商链接