做者:Dean Edwards
在JavaScript中,对象检测是很常见的。浏览器的不统一致使你的代码有时候必须包含兼容不一样浏览器的分支。这有一个拥有更简洁、更有用意的脚本代码的简单的方式来加速对象的检测。
不要这样作:
function addEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent("on" + type, handler);
}
};
要这样作:
var addEvent;
if (document.addEventListener) {
addEvent = function(element, type, handler) {
element.addEventListener(type, handler, false);
};
} else if (document.attachEvent) {
addEvent = function(element, type, handler) {
element.attachEvent("on" + type, handler);
};
} else {
addEvent = new Function; // not supported
}
这意味着你只要执行一次对象检测而不用每次调用
addEvent时都要进行检测。很明显,这项技术能够用在你进行对象检测时的任何函数中。
一个很简洁的版本:
var addEvent;
addEvent=(
document.addEventListener?(
function(element, type, handler) {
element.addEventListener(type, handler, null);
}
):document.attachEvent?(
function(element, type, handler) {
element.attachEvent("on" + type, handler);
}
): new Function; // not supported
)