Endprüfung Nachrunde R8: restoreFocus fokussiert mit preventScroll
Ohne die Option springt die Seite beim Zurückgeben des Fokus zum Ziel: bei einer Zeile weit unten in
einer langen Liste zur Meldung oben, und die Person verliert ihre Stelle. restoreFocus ruft jetzt
target.focus({ preventScroll: true }); der Fokus (und damit die Ansage) wandert, die Ansicht bleibt stehen.
Die Attrappe in workersFocus.test.mjs merkt sich die Argumente, ein neuer Test pinnt genau einen Aufruf
mit dieser Option.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7c12cd22a6
commit
c48d1834f4
2 files changed
+13
-2
No files matched your search
@@ -21,10 +21,12 @@ export function activeControl(doc) {
|
||||
const usable = (el) => Boolean(el) && typeof el === 'object' && typeof el.focus === 'function' && el.isConnected !== false && el.disabled !== true
|
||||
|
||||
// Gibt den Fokus an den ersten brauchbaren Kandidaten (eingehängt, nicht gesperrt), falls er verloren ging. Ergebnis: ob fokussiert wurde.
|
||||
// preventScroll: fokussiert focus() ohne die Option, springt die Seite zum Ziel; bei einer Zeile weit unten in einer langen Liste würde sie
|
||||
// zur Meldung oben springen und die Person verlöre ihre Stelle. Der Fokus (und damit die Ansage) wandert, die Ansicht bleibt stehen.
|
||||
export function restoreFocus(doc, candidates) {
|
||||
if (!focusLost(doc)) return false
|
||||
const target = candidates.find(usable)
|
||||
if (!target) return false
|
||||
target.focus()
|
||||
target.focus({ preventScroll: true })
|
||||
return true
|
||||
}
|
||||
Reference in new issue
Block a user