Merge pull request #2659 from keepassxreboot/fix/topmost_element_shadow_dom

Fix topmost element check with Shadow DOM
This commit is contained in:
Sami Vänttinen 2025-08-27 21:59:51 +03:00 committed by GitHub
commit a4253447a1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -418,10 +418,11 @@ kpxcFields.isTopElement = function(elem, rect) {
// Check topmost element from three points inside the input
const verticalMiddle = rect.top + (rect.height / 2);
const rootNode = elem.getRootNode() ?? document;
if (matchesWithNodeName(elem, 'INPUT') && [
document.elementFromPoint(rect.left + (rect.width / 4), verticalMiddle), // First third
document.elementFromPoint(rect.left + (rect.width / 2), verticalMiddle), // Middle
document.elementFromPoint(rect.left + (rect.width / 1.33), verticalMiddle), // Last third
rootNode.elementFromPoint(rect.left + (rect.width / 4), verticalMiddle), // First third
rootNode.elementFromPoint(rect.left + (rect.width / 2), verticalMiddle), // Middle
rootNode.elementFromPoint(rect.left + (rect.width / 1.33), verticalMiddle), // Last third
].some((e) => e !== elem)) {
return false;
}