Запретить выбор нескольких узлов в Chrome при двойных / тройных щелчках - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь получить список внешних узлов. Отлично работает при случайном выборе (или выборе нескольких абзацев). Но когда я выбираю полный абзац тройным щелчком в Chrome, он также выбирает следующий элемент / узел. Как я могу предотвратить или исправить это? Сниппет отлично работает в Firefox. Но, другие браузеры не пробовали!

Вот фрагмент -

function getEndParentNode(element) {
  var parent = element.parentNode;
  if (parent != document.body) {
    element = getEndParentNode(parent);
  }
  return element;
}

function getEndParentNodesInRange(range) {
  var startParent = getEndParentNode(range.startContainer);
  var endParent = getEndParentNode(range.endContainer);
  endParent = startParent == endParent ? null : endParent;

  var nodes = [startParent];
  var node = startParent;
  while (node != null && endParent != null) {
    node = node.nextSibling;
    if (node != null) {
      nodes.push(node);
    }

    if (node == endParent || node == startParent) {
      node = null;
    }
  }

  return nodes;
}

document.getElementById('button').onclick = function(e) {
    e.preventDefault();
  var selection = document.getSelection().getRangeAt( 0 );
  var nodes = getEndParentNodesInRange(selection);
  console.log(nodes);
}
<p>
    <img style="float:right; margin: 10px;" src="https://xdsoft.net/jodit/files/download.jpg" alt="Itaque nostrum est-quod nostrum dico, artis est-ad ea principia, quae accepimus."></p>
<h1>Itaque nostrum est-quod nostrum dico, artis est-ad ea principia, quae accepimus.</h1>

<p>P1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quonam, inquit, modo? Illum mallem levares, quo optimum atque humanissimum virum, Cn. Quae quidem vel cum periculo est quaerenda vobis; Amicitiam autem adhibendam esse censent,
    quia sit ex eo genere, quae prosunt. <a href="http://loripsum.net/" target="_blank">Duo Reges: constructio interrete.</a> Illud quaero, quid ei, qui in voluptate summum bonum ponat, consentaneum sit dicere. At vero illa, quae Peripatetici, quae Stoici
si essent boni viri. Luxuriam non reprehendit,
    modo sit vacua infinita cupiditate et timore. Sit ista in Graecorum levitate perversitas, qui maledictis insectantur eos, a quibus de veritate dissentiunt. </p>
<p>P2 Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor. Lorem ipsum dolor.&nbsp;</p>

<blockquote cite="http://loripsum.net">
    Nec enim absolvi beata vita sapientis neque ad exitum perduci poterit, si prima quaeque bene ab eo consulta atque facta ipsius oblivione obruentur.
</blockquote>

<button id="button" style="margin-top:100px;margin-bottom:50px;">Get Selected Nodes</button>
...