Как заменить часть HTML на другую часть HTML на странице?

Я делаю простое расширение для браузера, которое должно использоваться для добавления ссылок на страницу. Расширение должно находить вхождения текста со ссылками на законы и оборачивать их ссылками на соответствующие страницы с текстами законов.

Например, ссылка "chapter 1 of Some Law" в тексте "The topic covered in the chapter 1 of Some Law" должна быть обернута такой ссылкой - "The topic covered in <a href="http://link-to-the-law.text">chapter 1 of Some Law</a>"

Пользователь взаимодействует с расширением следующим образом:

  1. выделяет некоторый текст на странице (он может включать много элементов DOM)
  2. запускает перенос текста, щелкнув правой кнопкой мыши кнопку меню
  3. CORS с выделенным текстом выполняются на наш сервер
  4. возвращается текст со ссылками на законы, заключенными в ссылки
  5. выделенный текст заменяется возвращенным текстом

Теперь я застрял на шаге 5. У меня есть Selection object и необработанный полученный HTML с обернутыми ссылками.

Можно ли (и как, если да) заменить выделенный текст (который на самом деле представляет собой набор элементов DOM) полученным текстом? Может быть, вы сталкивались с некоторыми расширениями/библиотеками/и т. д., которые действуют аналогичным образом? Или, может быть, вы знаете лучший способ сделать такую ​​​​замену? Если это так, пожалуйста, дайте мне знать.


person Vasily    schedule 25.05.2015    source источник
comment
Дубликат для Chrome, а для Firefox? :(   -  person Noitidart    schedule 25.05.2015
comment
@Noitidart Другой вопрос касается логики расширения Chrome, но данный ответ не зависит от браузера.   -  person Rob W    schedule 25.05.2015


Ответы (1)


Я не совсем уверен, о чем вы спрашиваете, но насколько я понимаю, вы хотите заменить элементы DOM другими элементами DOM. Посмотрите innerHTML и/или createElement.

person Isaac Wasserman    schedule 25.05.2015
comment
Да, набор элементов DOM с HTML. Как я понимаю, innerHTML просто устанавливает HTML в элемент, но мне нужно заменить произвольный набор элементов DOM (которые были выбраны, некоторые из них могут быть даже неполными - например, если пользователь выбрал только часть абзаца). - person Vasily; 25.05.2015
comment
Обратитесь к этому stackoverflow.com/ вопросов/6328718/ просто используйте ‹a› вместо ‹span› - person Isaac Wasserman; 25.05.2015
comment
Вопрос об обертывании выделенного текста, а не о его замене, все равно спасибо. - person Vasily; 25.05.2015