2014-12-02 4 views

Odpowiedz

29

Według MDN

Selection. anchorNode - Zwraca węzeł, w którym rozpoczyna się wybór.

Wybór. focusNode - Zwraca węzeł, w którym kończy się wybór.

ponieważ nie było debaty na temat nazewnictwa, baseNode jest alias dla anchorNode, extentNode dla focusNode

Poniżej znajduje się poza zakresem tej kwestii, ale będę pisać to tak, ponieważ uznałem, że wybór jest trudnym elementem w niektórych scenariuszach.

Spójrz na ten przykład:

<p>ab12<sup>3</sup>4567890 !</p> 

Powiedzmy zrobiliśmy wybór "1234567890". Zrobiłem zdjęcie, aby wyjaśnić, gdzie znajdują się węzły i przesunięcia kotwicy i ostrości.

window.getSelection

+2

Wygląda na to, że są pewne niespójności (być może błędy) z węzłami baseNode i extentNode, w których nie pasują one odpowiednio do anchorNode i focusNode, niektóre przypadki. Nie widzę jednak żadnego powodu, żeby z nich korzystać. – Synexis

1

Nie jestem ekspertem, ale eksperymentując wydaje mi się, że anchorNode jest węzłem, w którym rozpoczęto selekcję, i focusNode tym, w którym się zakończył (prawdopodobnie dlatego, że ma fokus po zakończeniu selekcji).

Węzeł baseNode wydaje się być taki sam jak węzeł anchorNode i extentNode taki sam jak węzeł podstawowy, tyle tylko, że nie istnieją w przeglądarce Firefox, tylko w przeglądarce Chrome.

2

I zostały budowania z funkcji, która wymaga zagnieżdżonych elementów contentEditable. Podczas debugowania zauważyłem, że baseNode i extentNode są tylko aliasami. Próbuję znaleźć na nich dokumentację, ponieważ nie ma ich w MDN. Ale na podstawie tego zrzutu nie zakładam, że są to po prostu aliasy (w Chrome): enter image description here