2012-05-13 40 views
10

我寫了這個綁定方法,並有一個問題在我的preventDefault()方法在IE中工作。回調線從不執行。有人可以提供幫助嗎?謝謝!跨瀏覽器preventDefault()沒有jQuery

var preventDefault = function (event) { 
    if (window.event) { window.event.returnValue = false; } 
    else if (event.preventDefault) { event.preventDefault(); } 
    else { event.returnValue = false; } 
}; 

var bindEvent = function (ele, type, cb) { 
    if (window.addEventListener) { 
     ele.addEventListener(type, cb, false); 
    } else if (window.attachEvent) { 
     ele.attachEvent('on' + type, function() { 
      event.preventDefault = function() { 
       preventDefault(event); 
      }.call(this); 
      cb.call(ele, event); //this does not execute 
     }); 
    } 
}; 
+0

刪除'.CALL(這)'該行之前不會執行。它不會執行,因爲前面會引發語法錯誤。 –

回答

11
// cancel event 
function cancelEvent(event) { 
    if (event.preventDefault) { 
     event.preventDefault(); 
    } else { 
     event.returnValue = false; 
    } 
} 
+1

在IE9中不工作 –

+0

@JeffTian您無法阻止滾動事件的默認操作。這就是爲什麼你認爲它不起作用! – undefined

+0

@undefined是的你是對的。 –