mirror of
https://github.com/jlengrand/webcomponentsjs.git
synced 2026-03-10 08:51:22 +00:00
IE's preventDefault is only right during event dispatch
Regression fix from #444
This commit is contained in:
@@ -537,14 +537,12 @@
|
||||
|
||||
unsafeUnwrap(this).preventDefault();
|
||||
|
||||
if (!this.defaultPrevented) {
|
||||
Object.defineProperty(this, 'defaultPrevented', {
|
||||
get: function() {
|
||||
return true;
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
Object.defineProperty(this, 'defaultPrevented', {
|
||||
get: function() {
|
||||
return true;
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -67,14 +67,12 @@
|
||||
|
||||
origPreventDefault.call(this);
|
||||
|
||||
if (!this.defaultPrevented) {
|
||||
Object.defineProperty(this, 'defaultPrevented', {
|
||||
get: function() {
|
||||
return true;
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
Object.defineProperty(this, 'defaultPrevented', {
|
||||
get: function() {
|
||||
return true;
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -88,7 +88,32 @@
|
||||
e.preventDefault();
|
||||
assert.isTrue(e.defaultPrevented);
|
||||
// call again, just in case
|
||||
assert.doesNotThrow(e.preventDefault);
|
||||
assert.doesNotThrow(function() {e.preventDefault(); });
|
||||
});
|
||||
|
||||
test('CustomEvent defaultPrevented', function() {
|
||||
var e = new CustomEvent('foo', {cancelable: true});
|
||||
e.preventDefault();
|
||||
assert.isTrue(e.defaultPrevented);
|
||||
// call again, just in case
|
||||
assert.doesNotThrow(function() {e.preventDefault(); });
|
||||
});
|
||||
|
||||
test('dispatch and prevent', function() {
|
||||
var el = document.createElement('div');
|
||||
document.body.appendChild(el);
|
||||
var e = new CustomEvent('foo', {cancelable: true, bubbles: true});
|
||||
var fn = function(e) {
|
||||
e.preventDefault();
|
||||
};
|
||||
var check = function check(e) {
|
||||
assert.isTrue(e.defaultPrevented);
|
||||
document.body.removeEventListener('foo', check);
|
||||
document.body.removeChild(el);
|
||||
};
|
||||
el.addEventListener('foo', fn);
|
||||
document.body.addEventListener('foo', check);
|
||||
assert.isTrue(e.defaultPrevented);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user