一、兼容性实现getElementsByClassName
function getElesByClassName(className, parentId) {
if(!document.getElementsByClassName) {
document.getElementsByClassName = function(className, parentId) {
var parent = parentId ? document.getElementById(parentId) : document;
var ret = [];
var eles = parent.getElementsByTagName('*');
for(i=0; i<eles.length; i++) {
if(eles[i].className == className
|| eles[i].className.indexOf(className + ' ')>=0
|| eles[i].className.indexOf(' ' + className + ' ')>=0
|| eles[i].className.indexOf(' ' + className)>=0) {
ret.push(eles[i])
}
}
return ret
}
}
return document.getElementsByClassName(className);
}
二、兼容实现DOMContentLoaded事件
function myReady(fn) {
if(document.addEventListener) {
document.addEventListener("DOMContentLoaded", fn, false);
} else {
IEContentLoaded(fn);
}
function IEContentLoaded(fn) {
var docu = window.document;
var done = false;
var init = function() {
if(!done) {
done = true;
fn();
}
};
(function() {
try {
docu.documentElement.doScroll("left")
} catch(e) {
setTimeout(arguments.callee, 50);
return;
}
init();
})();
docu.onreadystatechange = function() {
if(docu.readyState == 'complete') {
docu.onreadystatechange = null;
init();
}
}
}
}
三、对javascript事件的封装
var eventUtil = {
addHandle: function(ele, type, handle) {
if(ele.addEventListener) {
ele.addEventListener(type, handle, false);
} else if(ele.attachEvent) {
ele.attachEvent('on'+type, handle);
} else {
ele['on'+type] = handle;
}
},
removeHandle: function(ele, type, handle) {
if(ele.removeEventListener) {
ele.removeEventListener(type, handle, false);
} else if(ele.detachEvent) {
ele.detachEvent('on'+type, handle);
} else {
ele['on'+type] = null;
}
},
getEvent: function(event) {
return event ? event : window.event;
},
getType: function(event) {
return event.type;
},
getElement: function(event) {
return event.target || event.srcElement;
},
preventDefault: function(event) {
if(event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
},
stopPropagation: function(event) {
if(event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
};