js性能最適化整理の不活性性ロード
2150 ワード
ブラウザの特性をチェックして、異なるブラウザの対応問題を解決します.例えば、私たちの最も一般的なdomノードにイベントの関数を追加します.
function addEvent(element,type,handler){
if(element.addEventListener){
element.addEventListener(type,handler,false)
}else if(element.attacheEvent){ //attacheEvent
element.attachEven('on'+type,function(){
handler.apply(element,arguments); // attachEvent , this
});
}else{
element['on'+type]=handler;
}
}
addEvent , , addEventListener , , attachEvent , , dom 0 。 , addEvent , , , , , ,if , 。
解決方法:惰性ロード function addEvent (element,type,handler) {
if (element.addEventListener) {
addEvent = function (element,type,handler) {
element.addEventListener(type, handler, false);
}
}
else if(element.attachEvent){
addEvent = function (element,type,handler) {
element.attachEvent('on' + type, function(){
handler.apply(element,arguments); // attachEvent , this
});
}
}
else{
addEvent = function (element,type,handler) {
element['on' + type] = handler;
}
}
return addEvent(element,type,handler);
}
関数宣言時に適切な関数を指定します.このように関数を初めて呼び出した時には性能が損なわれず、コードを読み込む時には性能がわずかに損なわれます. var addEvent = (function () {
if (document.addEventListener) {
return function (type, element, handler) {
element.addEventListener(type, handler, false);
}
}
else if (document.attachEvent) {
return function (type, element, handler) {
element.attachEvent('on' + type, function(){
handler.apply(element,arguments); // attachEvent , this
});
}
}
else {
return function (type, element, handler) {
element['on' + type] = handler;
}
}
})();