以上程式碼在頁面載入的時候就彈出“這是一個擴充方法”,不過相信你已經注意到了,在IE6,7,8裡面會出錯,但在IE9以上或Chrome,Firefox,Opera這些瀏覽器裡面都能正常運作,這是相容性問題,別擔心,後面會解決。
DOM功能擴充
你好 從上述程式碼可以看出,有了DOMExtend這個方法以後,我們就可以透過傳入不用的name 和fn 來實現不同的擴充。
2、以上講完了HTMLElement,接下來講講事件的綁定,很多人都知道,IE和其他瀏覽器的事件綁定方式不一樣,實現兼容所有瀏覽器的事件綁定的代碼如下:
DOM 功能擴充
你好 name, fn){
if(typeof(HTMLElement)!="undefined"){
}
else{
var _getElementById=document.getElementById;
var _elem=_getElementById(id);
return _elem;
}
document.getElementsByTagName=function(tag){
var len=_elem.length;
,(var i=0;i
=「fn」) ;
}
}
var var _createElement=document.createElement;
document.createElement=function(tag){
var _elem=_create元素(標籤);
eval("_elem." name " =" fn);
return _elem;
var _documentElement=document.documentElement;
eval("_documentElement." name "=" fn);
var _documentBody=document.body;
}
}
function BindEvent(活動,有趣){ this.addEventListener(event,fun,false);
else{
, }
DOMExtend("bind",BindEvent);var wrap=document.getElementById("tagA" );
wrap.bind("click",function(){
alert(this. nerHTML);
OK,目前為止已經解決了相容性問題,這是所有瀏覽器都能順利通過的DOM元素擴展的代碼,但是這樣還有一個小問題,細心的人會發現在IE瀏覽器裡面彈出的結果是"undefined",而不是"你好";問題的原因在於IE的事件綁定上,看以上代碼,當調用alert(this.innerHTML)的時候,由於IE綁定事件用的是attachEvent,這時候this指向的是windows,於是現在的目標的要改變this指向的對象,將this指向tagA。於是經過修改,完整程式碼如下: