Skip to content
This repository was archived by the owner on Sep 20, 2019. It is now read-only.

Commit 32f5cf8

Browse files
author
Steve Orvell
committed
Merge pull request #448 from webcomponents/ie-preventdefault
IE's preventDefault is only right during event dispatch
2 parents b743f4e + bba5fb8 commit 32f5cf8

File tree

3 files changed

+38
-17
lines changed

3 files changed

+38
-17
lines changed

src/ShadowDOM/wrappers/events.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -537,14 +537,12 @@
537537

538538
unsafeUnwrap(this).preventDefault();
539539

540-
if (!this.defaultPrevented) {
541-
Object.defineProperty(this, 'defaultPrevented', {
542-
get: function() {
543-
return true;
544-
},
545-
configurable: true
546-
});
547-
}
540+
Object.defineProperty(this, 'defaultPrevented', {
541+
get: function() {
542+
return true;
543+
},
544+
configurable: true
545+
});
548546
};
549547
}
550548

src/WebComponents/dom.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,12 @@
6767

6868
origPreventDefault.call(this);
6969

70-
if (!this.defaultPrevented) {
71-
Object.defineProperty(this, 'defaultPrevented', {
72-
get: function() {
73-
return true;
74-
},
75-
configurable: true
76-
});
77-
}
70+
Object.defineProperty(this, 'defaultPrevented', {
71+
get: function() {
72+
return true;
73+
},
74+
configurable: true
75+
});
7876
};
7977
}
8078

tests/WebComponents/html/dom.html

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,32 @@
8888
e.preventDefault();
8989
assert.isTrue(e.defaultPrevented);
9090
// call again, just in case
91-
assert.doesNotThrow(e.preventDefault);
91+
assert.doesNotThrow(function() {e.preventDefault(); });
92+
});
93+
94+
test('CustomEvent defaultPrevented', function() {
95+
var e = new CustomEvent('foo', {cancelable: true});
96+
e.preventDefault();
97+
assert.isTrue(e.defaultPrevented);
98+
// call again, just in case
99+
assert.doesNotThrow(function() {e.preventDefault(); });
100+
});
101+
102+
test('dispatch and prevent', function() {
103+
var el = document.createElement('div');
104+
document.body.appendChild(el);
105+
var e = new CustomEvent('foo', {cancelable: true, bubbles: true});
106+
var fn = function(e) {
107+
e.preventDefault();
108+
};
109+
var check = function check(e) {
110+
assert.isTrue(e.defaultPrevented);
111+
document.body.removeEventListener('foo', check);
112+
document.body.removeChild(el);
113+
};
114+
el.addEventListener('foo', fn);
115+
document.body.addEventListener('foo', check);
116+
assert.isTrue(e.defaultPrevented);
92117
});
93118
});
94119
</script>

0 commit comments

Comments
 (0)