Why does getPreventDefault () work, but defaultPrevented doesn't?

I am working on a Firefox extension and continue to see the following warning:

Using getPreventDefault () is not recommended. Use defaultPrevented instead.

However, for what I'm trying to do, it defaultPreventeddoesn't seem to work while it getPreventDefault()works. For a simplified snippet of code, here is what I inserted into the notepad of the Firefox browser when working in context Browser:

window.addEventListener('fooEvent', function (event) { 
    console.log('fooEvent has fired');
    event.preventDefault();
}, true, true);

Then in the browser console (the one that I get when I press Shift + Ctrl + k) I run the following code:

e = document.createEvent('Event');
e.initEvent('fooEvent', true, true);
document.dispatchEvent(e);
console.log('after dispatch', e.defaultPrevented, e.getPreventDefault());

fooEvent has fired fooEvent has fired Javascript, , . after dispatch false true , defaultPrevented - false, getPreventDefault() true. Firefox - !

API, , Firefox . ( API, , , , , , , .) ?

+4
1

Firefox 30 Nightly.

, , , , .

: , , ; . getDefaultPrevented() . ( , .defaultPrevented .getPreventDefault()):

var dp = "getPreventDefault" in e ?
  e.getPreventDefault() :
  e.defaultPrevented;

, , https://bugzilla.mozilla.org/show_bug.cgi?id=691151

, URI - . , , .

- dispatchEvent(). -, .

dispatchEvent , - , preventDefault. preventDefault , false, true.

: DOM-Level-2-Events

e = document.createEvent('Event');
e.initEvent('fooEvent', true, true);
if (document.dispatchEvent(e)) {
  // Execute default action
}
+6

Source: https://habr.com/ru/post/1544214/


All Articles