做者: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
)