2012-05-13 8 views
10

Napisałem tę metodę wiązania i mam problem z moją metodą preventDefault() do pracy w IE. Linia wywołania zwrotnego nigdy nie zostanie wykonana. Czy ktoś może udzielić pomocy? Dzięki!Cross browser preventDefault() bez 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

Usuń '.Połączenia (this)' przed tą linią, która nie wykonuje. Nie wykonuje, ponieważ poprzedni wyrzuca błąd składni .. –

Odpowiedz

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

Nie działa w IE9 –

+0

@JeffTian Nie można zapobiec domyślnej akcji zdarzenia przewijania. Dlatego myślisz, że to nie działa! – undefined

+0

@undefined Tak, masz rację. –