Was ist anchorNode , baseNode , extentNode und focusNode in das Objekt zurückgegeben Dokument.getSelection?
Wenn ich eine Auswahl in eine html-Seite, die ich tun :
var a = document.getSelection()
Bekomme ich ein Objekt mit vier Eigenschaften :
- anchorNode
- baseNode
- extentNode
- focusNode
die Werte der ersten drei ist das gleiche, d.h. die Texte, die ich ausgewählt habe, aber wie unterscheiden Sie sich und welche zu benutzen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut MDN
Auswahl.anchorNode - liefert den Knoten, in dem die Selektion beginnt.
Auswahl.focusNode - liefert den Knoten, in der die Auswahl endet.
da gab es Debatten über die Benennung, baseNode ist alias für anchorNode, extentNode für focusNode
Der folgenden ist nicht Gegenstand dieser Frage, aber ich poste es trotzdem, da fand ich die Auswahl, ein heikles Teil, in einigen Szenarien.
Werfen Sie einen Blick auf dieses Beispiel:
Lassen Sie uns sagen, wir haben die Auswahl "1234567890".
Ich habe ein Bild gemacht, zu erklären, wo Anker und Fokus Knoten und offsets.
Ich habe die Entwicklung einer Funktion, die erfordert verschachtelte contenteditable Elemente. Bei der Fehlersuche bemerkte ich, dass baseNode und extentNode sind NICHT nur Aliase. Ich bin auf der Suche nach Dokumentation auf Sie, da Sie nicht in MDN. Aber basierend auf diesem screenshot, würde ich nicht davon ausgehen, Sie sind nur Aliase (in Chrom):
Ich bin keineswegs ein Experte, aber durch das Experimentieren scheint es mir, dass die anchorNode ist der Knoten, der Auswahl begonnen und focusNode das einzige, wo es endete (vermutlich, weil es den Fokus hat, nachdem die Auswahl über).
baseNode scheint das gleiche zu sein wie anchorNode und extentNode das gleiche wie baseNode, nur, dass Sie nicht im Firefox, nur in Chrom.