‘Element’

Element in IE

鏄熸湡涓, 7鏈 28th, 2010

鐪嬭繃涔嬪墠鍐欑殑閭g瘒BLOG锛屽簲璇ラ兘鍙戠幇浜嗕竴鍙ユ尯鏈夋剰鎬濈殑璇濄傚浜嶥OM涓殑element鎴戝彲浠ユ坊鍔犺嚜瀹氫箟浜嬩欢銆傛瘮濡傦細

Element.prototype.show=function(){this.style.display=’block’;}

鍠攡鐒跺悗璋冪敤涔

var test=document.getElementById(‘test’);

test.show();

鎭╋紝铏界劧鍦ㄦ渶鍚庣殑鏈鍚庢垜鐭ラ亾浜嗚繖涔堝啓鏄弗閲嶇殑姹℃煋鍘熷瀷閾剧殑涓绉嶅強鍏剁墰閫肩殑鍙嶉潰渚嬪瓙銆備絾鏄‘瀹炴垜浠婂ぉ瑕佽鐨勪笉鏄繖涓棶棰樸

缁忚繃娴嬭瘯鎵鏈夌殑娴忚鍣ㄩ櫎浜咺E6/7锛堟病鏈夋祴璇曚粈涔360锛岄仺娓革紝TT浠涔堢殑鏉叿娴忚鍣ㄢ︹︼級鍏朵粬鐨勬祻瑙堝櫒閮藉澶栧紑鏀綞lement瀵硅薄锛屽厑璁镐綘瀵归綈prototype鐨勫師鍨嬮摼涓婃坊鍔犳垨鑰呴噸鍐欐柟娉曘

浣嗘槸褰撲綘閬囧埌浜咺E锛岄偅涔堜綘灏变篃閬囧埌浜 “Element is undefine”….杩欎釜閿欒浜嗐

鏌ヤ簡濂戒箙锛屽叿浣撶殑瑙e喅鍔炴硶鏈2涓紝涓涓槸鍦ㄥ井杞畼鏂规煡鍒扮殑鐢℉TC鐨勬柟娉曞Element杩涜鎵╁睍鑷畾涔夋柟娉曪紝杩樻湁涓绉嶈佸鐨勬柟娉曪紝閭d箞灏辨槸閲嶅啓DOM鏂规硶銆

鏄剧劧锛岀2绉嶆柟娉曞湪涓浜涚ぞ鍖鸿鍙楀埌鎺ㄥ磭锛屽彿绉板彲浠ヨВ鍐99%鐨勯棶棰樸傝屼笉鐢ㄦ伓蹇冧汉鐨凥TC锛岃屼笖涓嶉渶瑕2涓枃浠跺姞杞介偅涔堝鏉傘

閭d箞鍒板簳鏄浣曡В鍐崇殑鍛紵

棣栧厛锛欵lement is undefine锛岄偅涔堟垜浠缓绔嬩竴涓狤lement灏卞ソ浜嗐

var Element=function(){};

鎭 涓涓瀯閫犲嚱鏁板鍣ㄥ氨寤虹珛浜嗭紝浠栬嚜韬凡缁忔嫢鏈変簡prototype灞炴т簡銆傚洜涓烘槸function鍢涖

鐒跺悗浣犳瘡娆$粰Element鎵╁睍鏂规硶鐨勬椂鍊欏叾瀹炲湪IE6/7涓嬮兘鏄粰杩欎釜浣犺嚜宸卞畾涔夌殑Element鎵╁睍鐨勬柟娉曘傞偅涔堟垜浠浣曡皟鐢ㄨ繖浜涙墿灞曟柟娉曞憿銆

鍥炴兂涓涓嬫垜浠粈涔堝満鍚堜細鐢ㄥ埌浜嬩欢銆傚枖锛実etElementById,getElementsByTagName,createElement涔熷氨鏄繖涓夌鎯呭喌浜嗐傝繕鏈変粈涔堝憿锛熷師鐢熺殑JS閲屽彧鏈夎繖3绉嶆柟娉曚簡鍚э紵涓嶅 鍙槸99%锛屼綘鍙互.all涔熷彲浠rom[0]绛夌瓑鍏朵粬鐨勬柟娉曡幏寰楀厓绱狅紝浣嗘槸鏈鍩烘湰鍏跺疄灏辨槸杩3涓柟娉曚簡銆

閭d箞鎴戜滑瑕侀噸鍐欒繖3涓狣OM鏂规硶锛屽湪姣忔璋冪敤鐨勬椂鍊欓兘缁ф壙鎴戜滑鑷繁鍒涘缓鐨凟lement瀵硅薄涓嬮潰鐨勮嚜瀹氫箟鏂规硶銆

濡備綍鍘诲仛鍛紵涓嬮潰鏄畬鏁寸殑浠g爜锛

(function(w, undefined){
var Element=w.Element || function(){
return {
author:’longxiao’
};
};

if (!!Element().author) {
var __createElement = document.createElement;
document.createElement = function(tagName){
var element = __createElement(tagName);
for (var key in Element.prototype)
element[key] = Element.prototype[key];
return element;
}

var __getElementById = document.getElementById;
document.getElementById = function(id){
var element = __getElementById(id);
for (var key in Element.prototype)
element[key] = Element.prototype[key];
return element;
}

var __getElementsByTagName = document.getElementsByTagName;
document.getElementsByTagName = function(tagName){
var elements = __getElementsByTagName(tagName);
for (var key in Element.prototype){
for(var i=0;i<elements.length;i++){
elements[i][key]=Element.prototype[key];
}
}
return elements;
}
};

Element.prototype.getattrlength=function(){
alert(this.attributes.length)
};

document.getElementById(‘page’).getattrlength();

})(window);

鏇村鍏充簬鍘熷瀷閾剧殑闂鍦ㄦ垜鑷繁鐮旂┒鏄庣櫧浜嗕箣鍚庡啀鏉ュ垎浜︹