3

カスタム イベントを同期的にトリガーするポリマー要素があり、event.preventDefault() を使用してイベントがキャンセルされたかどうかを知りたいです。event.defaultPrevented を使用すると、意図したアクションを知ることができます。これはすべてのブラウザー (Chrome、Canary、Firefox、Opera) で機能しますが、IE 11 (古いブラウザーについては心配していません) では機能しません。イベントにいくつかのプロパティを設定し、トリガーして処理している場所を確認できることはわかっていますが、見逃したものがあるかどうかを知りたいです。

http://jsbin.com/husamupi/1/editからコードを試すことができます

4

2 に答える 2

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
于 2014-12-28T09:22:56.377 に答える
3

defaultPreventedコードによって作成された「合成」イベントに対してIE 11 が設定されていないようです。

JSbin の例: http://jsbin.com/wohafoyo/1/edit

イベントの作成とディスパッチに関して何を試しても、合成クリック イベントを true にpreventDefault設定できませんでした。defaultPrevented

おそらく、Polymer はCustomElement.prototype.preventDefaultset に変更できdefaultPreventedます。

于 2014-04-28T19:36:46.210 に答える