event.preventDefault()在IE 11中不适用于自定义事件 [英] event.preventDefault() is not working in IE 11 for custom events

查看:76
本文介绍了event.preventDefault()在IE 11中不适用于自定义事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个聚合物元素,该元素可以同步触发自定义事件,并且我想知道是否使用event.preventDefault()取消了该事件.使用event.defaultPrevented我可以知道预期的操作.这适用于所有浏览器(Chrome,Canary,Firefox,Opera),但在IE 11(不必担心较旧的浏览器)上不起作用. 我知道我可以在事件上设置一些属性,并在触发和处理的地方进行检查,但是想知道是否还有其他我想念的东西.

I have a polymer element which triggers a custom event synchronously and I want to know whether the event was cancelled using event.preventDefault(). Using event.defaultPrevented I can know the intended action. This works on all browsers(Chrome, Canary, Firefox, Opera) but on IE 11 (not worried about older browsers) its not working. I know I can set some property on my event and check for that back where I am triggering and handle but want to know if there is something else which I missed.

您可以从中试用代码 http://jsbin.com/husamupi/1/edit

You can try out the code from http://jsbin.com/husamupi/1/edit

推荐答案

我遇到了同样的问题,并可以通过以下操作来解决:

I had the same problem and could solve it with the following hack:

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

这篇关于event.preventDefault()在IE 11中不适用于自定义事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆