2012-05-13 35 views
10

Bu bağlama yöntemini yazdım ve IE'de çalışmak için preventDefault() yöntemimde bir sorun yaşıyorum. Geri arama hattı asla yürütmez. Birisi yardım sağlayabilir mi? Teşekkürler!jQuery olmadan çapraz tarayıcı preventDefault()

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

Kaldır '(this)' Bu çizginin önce yürütmüyor .call söyledi. Önceki, bir Sözdizimi Hatası atar çünkü yürütmez, .. –

cevap

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

IE9'da çalışmıyor –

+0

@JeffTian Kaydırma olayının varsayılan eylemini önleyemezsiniz. Bu yüzden işe yaramadığını düşünüyorsun! – undefined

+0

@undefined Evet haklısınız. –

İlgili konular