Как да замените част от 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/ questions/6328718/ просто използвайте ‹a› вместо ‹span› - person Isaac Wasserman; 25.05.2015
comment
Въпросът е за обвиването на избран текст, но не и за замяната му, благодаря все пак. - person Vasily; 25.05.2015