JavaScript для получения абзаца выделенного текста в веб-странице

Я бы посоветовал вам удалить самого композитора и переустановить его. Попробуйте установить пакеты laravel с ним.

19
задан Lilz 10 May 2009 в 14:04
поделиться

4 ответа

На самом деле это довольно сложно сделать, потому что вам нужно рассмотреть шесть случаев:

  1. Выбор не в пределах абзаца (легко);
  2. Весь выбор - в пределах одного абзаца (легко);
  3. Весь выделенный фрагмент пересекает один или несколько смежных абзацев (сложнее);
  4. Выделение начинается или заканчивается элементом вне абзаца (сложнее);
  5. Составленные абзацы находятся на разных уровнях, например, один находится в элементе списка, а два других являются братьями и сестрами списка (что еще сложнее); и
  6. Некоторая комбинация вышеперечисленного.

Итак, сначала вы должны решить, насколько полным вы хотите, чтобы решение было. Я расскажу только о простейших случаях (1) и (2).

function getSelectedParagraphText() {
  if (window.getSelection) {
      selection = window.getSelection();
  } else if (document.selection) {
      selection = document.selection.createRange();
  }
  var parent = selection.anchorNode;
  while (parent != null && parent.localName != "P") {
    parent = parent.parentNode;
  }
  if (parent == null) {
    return "";
  } else {
    return parent.innerText || parent.textContent;
  }
}

Примечание: Если вам нужны теги, замените textContent на innerHTML.

Изменить: Лучшая версия вставлена, включая лучшую совместимость с браузером.

20
ответ дан 30 November 2019 в 03:53
поделиться

select.anchorNode.parentNode вернет родительский узел, в вашем случае тег

, и вы сможете получить текст этого узла.

var x = window.getSelection() 
var z = x.anchorNode.parentNode
alert(z.innerHTML)

Убедитесь, что вы также просматриваете window.getSelection (), поскольку document.getSelection устарела в firefox.

4
ответ дан 30 November 2019 в 03:53
поделиться

Я нашел этот полезный пример .

Похоже, что некоторые браузеры поддерживают window.getSelection (), а другие поддерживают document.getSelection (). Пример обрабатывает все эти случаи.

5
ответ дан 30 November 2019 в 03:53
поделиться

На основе jsmatita родился новый проект: http://takenotes.sourceforge.net/ {{1 }} (на итальянском языке)

1
ответ дан 30 November 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: