Last active
December 5, 2022 13:19
-
-
Save amatiasq/1ceab24121f5bf4c5a44797868d11430 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
button.click(); // nothing | |
event = document.createEvent ('MouseEvents'); | |
event.initEvent('click', true, true); | |
button.dispatchEvent(click) // nothing | |
// here I discover `event.isTrusted` | |
event = document.createEvent ('MouseEvents'); | |
event.initEvent('click', true, true); | |
event.isTrusted = true; | |
console.log(event.isTrusted); | |
// false | |
event = document.createEvent ('MouseEvents'); | |
event.initEvent('click', true, true); | |
Object.defineProperty(event, 'isTrusted', { value: true }); | |
// Cannot redefine property: isTrusted | |
event = document.createEvent ('MouseEvents'); | |
event.initEvent('click', true, true); | |
fake = Object.create(event, { isTrusted: { value: true }}); | |
button.dispatchEvent(fake); | |
// Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'. | |
event = document.createEvent ('MouseEvents'); | |
event.initEvent('click', true, true); | |
fake = Object.create( | |
Object.getPrototypeOf(event), | |
{ isTrusted: { value: true }} | |
); | |
button.dispatchEvent(fake); | |
// Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'. | |
event = document.createEvent ('MouseEvents'); | |
event.initEvent('click', true, true); | |
fake = new Proxy(event, { | |
get(target, prop, receiver) { | |
return prop === 'isTrusted' ? true : Reflect.get(...arguments); | |
} | |
}); | |
button.dispatchEvent(fake); | |
// Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'. |
No :\
afaik, you can't fake isTrusted on real Event objects. If you're trying to trick 3rd-party event listeners checking for this, you may try to wrap the listener functions themselves.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Did you get it?