Mein jüngster Ausflug in den Aufbau von Wysiwyg -Redakteuren und Popovers ergab einige faszinierende Einblicke in die Browser -APIs. Der Mutterschaftsurlaub bot die perfekte Gelegenheit für tiefe Tauchgänge in technische Herausforderungen ohne den Druck der Fristen.
Mein aktueller Fokus liegt auf "Codename Goose", einem Open-Source-AI-Agenten mit einem Rost-Backend und einer elektronenbasierten Chat-Schnittstelle. Ich habe eine Pull -Anfrage zur Integration eines WYSIWYG -Editors eingereicht, der für eine benutzerdefinierte Lösung über vorhandene Pakete entschied, um die Bündelgröße zu minimieren. Die Betreuer schlugen jedoch eine Popover -Symbolleiste vor, um sich auf Platzbedenken auszuräumen.
Die Erstellung dieser schwimmenden Symbolleiste erwies sich als unerwartet herausfordernd. Meine Ziele waren unkompliziert:
Um zu veranschaulichen, betrachten Sie diese Analogie:
Einschränkungen
popovertarget
Die Auswahl -API
Colby Fayocks Blog -Beitrag "So teilen Sie ausgewählter Text in React mit der Auswahl -API", stellte mich in die Selection API
vor (über window.getSelection()
zugänglich). Diese API gibt ein Selection
Objekt zurück, das den ausgewählten Text beschreibt.
getRangeAt(0)
Die Methode getRangeAt(0)
im Objekt Selection
liefert die Start- und End -Offsets der Auswahl:
startOffset
: Der Startindex der Auswahl. endOffset
: Der Endindex der Auswahl (nach dem letzten ausgewählten Zeichen). Zum Beispiel in "Hallo, Welt! Willkommen", wählt "welt" aus startOffset
= 7 und endOffset
= 12.
Hinweis: getRangeAt(0)
Zugriff auf die erste Auswahl. Browser wie Firefox ermöglichen mehrere Auswahlen (Strg-Klick), die Zugriff auf Indizes über 0 in Browsern mit einer Auswahl führt jedoch zu Fehlern.
getBoundingClientRect()
getRangeAt(0)
bietet Zugriff auf getBoundingClientRect()
, das ein Begrenzungsfeld mit den oberen, rechten, unten, linken, linken Koordinaten des Textes und der Höhe des ausgewählten Textes zurückgibt. Dies ermöglicht eine präzise Popover -Platzierung über der Auswahl, wie gezeigt:
Dieser Ansatz ist jedoch in Textbereichen begrenzt.
Die "Spiegelgespiegelte Div" -Technik, die durch Diskussionen mit Claude entdeckt wurde, bietet eine Problemumgehung. Ein unsichtbarer Div überlagert den Textbereich und spiegelt seinen Inhalt und das Styling wider. Benutzerinteraktionen treten innerhalb dieses Divs auf und bieten einen vollständigen Zugriff bei der Beibehaltung eines Aussehens von Standardtexten. Selection API
-Methode (die die berechneten CSS -Stile eines Elements zurückgibt) waren maßgeblich daran beteiligt, das Erscheinungsbild des Textbereichs im Overlay Div zu entsprechen. getComputedStyle()
Schlussfolgerung
Das obige ist der detaillierte Inhalt vonWas den Textbereich Popovers mir über Browser -APIs beigebracht hat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!