我有一个聚合物元素同步触发自定义事件,我想知道是否使用event.preventDefault()取消了事件。使用event.defaultPrevented我可以知道预期的动作。这适用于所有浏览器(Chrome,Canary,Firefox,Opera),但在IE 11(不担心旧浏览器)上它不起作用。 我知道我可以在我的活动上设置一些属性并检查我触发和处理的地方,但是想知道是否还有其他我错过的东西。
您可以尝试使用代码 http://jsbin.com/husamupi/1/edit
答案 0 :(得分:5)
我遇到了同样的问题,可以通过以下黑客解决它:
var event = document.createEvent('CustomEvent');
event.initCustomEvent('custom', true, true, {});
event.preventDefault = function () {
Object.defineProperty(this, "defaultPrevented", {get: function () {return true;}});
};
event.preventDefault();
event.defaultPrevented; // true
答案 1 :(得分:2)
看起来IE 11没有为代码创建的“合成”事件设置defaultPrevented
。
示例JSbin:http://jsbin.com/wohafoyo/1/edit
无论我在事件创建和调度方面做了什么,我都无法将合成点击事件preventDefault
设置为defaultPrevented
为真。
也许Polymer可以修改CustomElement.prototype.preventDefault
来设置defaultPrevented
。