2012-05-13 16 views
10

Ho scritto questo metodo di collegamento e sto avendo un problema nel mio metodo preventDefault() per funzionare in IE. La linea di callback non viene mai eseguita. Qualcuno può fornire assistenza? Grazie!Cross browser preventDefault() senza 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

Rimuovere '.Call (questo)' prima di quella linea che non viene eseguito. Non viene eseguito, perché il precedente genera un errore di sintassi. –

risposta

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

Non funziona in IE9 –

+0

@JeffTian Non è possibile impedire l'azione predefinita dell'evento di scorrimento. Questo è il motivo per cui pensi che non funzioni! – undefined

+0

@undefined Sì, hai ragione. –