2012-05-13 2 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 Да, вы правы. –

Смежные вопросы