feat(jqLite): add event.isDefaultPrevented() as jQuery

Chrome's Event has defaultPrevented property, but other browsers haven't.
This is workaround for other browsers - same as jQuery.
This commit is contained in:
Vojta Jina 2011-07-20 01:32:29 +02:00
parent 91ccb4ba6e
commit f37f0ea16e
2 changed files with 26 additions and 0 deletions

View file

@ -376,6 +376,20 @@ forEach({
if (!event.target) {
event.target = event.srcElement || document;
}
if (isUndefined(event.defaultPrevented)) {
var prevent = event.preventDefault;
event.preventDefault = function() {
event.defaultPrevented = true;
prevent.call(event);
};
event.defaultPrevented = false;
}
event.isDefaultPrevented = function() {
return event.defaultPrevented;
};
forEach(eventHandler.fns, function(fn){
fn.call(element, event);
});

View file

@ -443,6 +443,18 @@ describe('jqLite', function(){
browserTrigger(a, 'click');
});
it('should have event.isDefaultPrevented method', function() {
jqLite(a).bind('click', function(e) {
expect(function() {
expect(e.isDefaultPrevented()).toBe(false);
e.preventDefault();
expect(e.isDefaultPrevented()).toBe(true);
}).not.toThrow();
});
browserTrigger(a, 'click');
});
});