Die Auswahlliste klappte hinter dem Dialog auf

Ein `<dialog>` mit `showModal()` liegt in der Top-Layer des Browsers,
über allem — unabhängig von `z-index`. Die Liste hing am `body` und
verschwand deshalb hinter genau dem Dialog, in dem ihr Knopf steht.
Jetzt wird sie in den Dialog gehängt, wenn es einen gibt. Mit
`elementFromPoint` nachgeprüft: an ihrer Stelle liegt wirklich ein
Listeneintrag obenauf.

Dazu zwei Stellen, die zu der Vermutung geführt haben, die
Spracheinstellung wirke nicht:

„Übersetzungen holen" stand stur auf en-US. Neben einem Server, der auf
Deutsch steht, liest sich das wie eine Aussage über den Server.
Vorgewählt wird jetzt die eigene Sprache, sonst die erste, die nicht
schon die des Servers ist — und der Text nennt die Serversprache.

Und „Meine Sprache" sagt jetzt deutlich, wenn sie abweicht. Sie ändert
nicht, was der Server holt, nur was man selbst sieht: steht sie auf
Englisch, während der Server auf Deutsch holt, sieht die ganze
Mediathek englisch aus und jedes Auffrischen scheint wirkungslos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-04 20:03:01 +02:00
co-authored by Claude Opus 5
parent e87d50e470
commit ce38da1376
2 changed files with 42 additions and 8 deletions
+7 -1
View File
@@ -126,7 +126,13 @@ export function auswahl(optionen: Option[], vorgabe = ''): Auswahlfeld {
if (e.key === 'Tab') schliessen();
};
document.body.appendChild(box);
// **In den Dialog, wenn es einen gibt.**
//
// Ein `<dialog>` mit `showModal()` liegt in der Top-Layer des Browsers —
// über allem, unabhängig von `z-index`. Eine Liste am `body` verschwand
// deshalb hinter dem Dialog, in dem ihr Knopf steht. Im Dialog selbst
// liegt sie mit ihm in derselben Ebene.
(knopf.closest('dialog') ?? document.body).appendChild(box);
offen = box;
knopf.setAttribute('aria-expanded', 'true');