Work around Firefox's refusal to dispatch events on disabled elements. Fixes #31393

Brought to you by a 12 year old Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=329509
This commit is contained in:
Javan Makhmali 2018-01-08 17:07:32 -05:00
parent 93e6a0ec55
commit 21417e02e9
1 changed files with 10 additions and 1 deletions

View File

@ -23,11 +23,20 @@ export function findElement(root, selector) {
}
export function dispatchEvent(element, type, eventInit = {}) {
const { disabled } = element
const { bubbles, cancelable, detail } = eventInit
const event = document.createEvent("Event")
event.initEvent(type, bubbles || true, cancelable || true)
event.detail = detail || {}
element.dispatchEvent(event)
try {
element.disabled = false
element.dispatchEvent(event)
} finally {
element.disabled = disabled
}
return event
}