2012-05-13 22 views
10

Escribí este método de vinculación y estoy teniendo un problema en mi método preventDefault() para trabajar en IE. La línea de devolución de llamada nunca se ejecuta. ¿Alguien puede proporcionar asistencia? ¡Gracias!Navegador cruzado preventDefault() sin 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

Quitar '.call (este)' antes de esa línea que no se ejecuta. No se ejecuta, porque el anterior arroja un error de sintaxis. –

Respuesta

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

No funciona en IE9 –

+0

@JeffTian No puede evitar la acción predeterminada del evento de desplazamiento. ¡Es por eso que crees que no funciona! – undefined

+0

@undefined Sí, tienes razón. –

Cuestiones relacionadas