Fixed keydown event handling problem with shadow DOM.

Editable elements in shadow DOMs can not be detected in old version.
This commit is contained in:
Nicky Chen 2020-09-23 12:59:19 +08:00
parent 139c8a8cb5
commit 252e258a59
2 changed files with 25 additions and 1 deletions

View file

@ -985,6 +985,28 @@ function moveToEndOfArray(arr, condition) {
}
}
/**
* Get the active or focused element in current DOM.
*
* Recursively search for the truly active or focused element in case there are
* shadow DOMs.
*
* @returns {Element} the truly active or focused element.
*/
function getActiveOrFocusedElement() {
let curRoot = document;
let curActiveOrFocused =
curRoot.activeElement || curRoot.querySelector(":focus");
while (curActiveOrFocused && curActiveOrFocused.shadowRoot) {
curRoot = curActiveOrFocused.shadowRoot;
curActiveOrFocused =
curRoot.activeElement || curRoot.querySelector(":focus");
}
return curActiveOrFocused;
}
export {
AutoPrintRegExp,
CSS_UNITS,
@ -1026,4 +1048,5 @@ export {
WaitOnType,
waitOnEventOrTimeout,
moveToEndOfArray,
getActiveOrFocusedElement,
};