aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVojta Jina2011-07-20 01:32:29 +0200
committerVojta Jina2011-09-08 20:37:28 +0200
commitf37f0ea16edd4b487ef8812ff69a78d9a287fa60 (patch)
treeb7c2dec7da132551a87bcc70fe4828e4c198690e
parent91ccb4ba6e203f1b80a1aa7187d8773434948fc2 (diff)
downloadangular.js-f37f0ea16edd4b487ef8812ff69a78d9a287fa60.tar.bz2
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.
-rw-r--r--src/jqLite.js14
-rw-r--r--test/jqLiteSpec.js12
2 files changed, 26 insertions, 0 deletions
diff --git a/src/jqLite.js b/src/jqLite.js
index 122684a5..6b954005 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -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);
});
diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js
index 673bee78..aac5aeb5 100644
--- a/test/jqLiteSpec.js
+++ b/test/jqLiteSpec.js
@@ -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');
+ });
});