Баги при замена текста через Range
доброго времени всем
вот код для рассмотрения содержимое тэга BODY <table class="table" width="100%" cellspacing="0" cellpadding="0"> <tr> <td id="visualTd" style="border-top:1px dotted #b2b2b2;"> <span id="s1"> <b><font color="#e68f17">«TEST WITHOUT BR »</font></b> <br><a href="http://test.ru"><font color="#99928a">+7 495</font> 550 03 60</a></span> </td> </tr> </table> <br /><br /> <input type="button" onclick="ff('s1');" value="Test" /> содержимое тэга SCRIPT var str = '<font color="#99928a">+7 495</font> 550 03 60'; //var str = '<a href="http://test.ru">+7 495 550 03 60</a>'; function clearEmptyTag(str) { const reg = /<(font|a)[^>]*>\s*<\/\1>/gi; while (~str.search(reg)) { str = str.replace(reg, ''); } return str; } function ff(s_id) { var r = window.getSelection().getRangeAt(0); var div = document.createElement("div"); div.innerHTML = str; var frag = document.createDocumentFragment(), child; while ( (child = div.firstChild) ) { frag.appendChild(child); } r.deleteContents(); r.insertNode(frag); window.getSelection().removeAllRanges(); // чистим паразитные пустые тэги var sObj = document.getElementById(s_id); sObj.innerHTML = clearEmptyTag(sObj.innerHTML); } собственно я пытаюсь выделить блок со ссылкой http://joxi.ru/nAyMxvphwVW70A и далее заменить её кодом из строки в переменной str собственно как можно догадаться я фактически пытаюсь вычистить в одном случае тэг ссылки, а в другом случае тэг шрифта всё работает если я пытаюсь оставить в выделенном ссылку и убрать тэг font в случае если я пытаюсь убрать из выделения ссылку и оставить раскрашивание, то кроме Mozilla не работает везде, а в Mozilla работает в том случае если за тэгом A перед закрывающим тэгом SPAN идёт какой-то любой тэг например BR если собственно пытаться заменить просто текст, то всё также работает заранее спасибо всем кто откликнется |
dbs74,
что должно получится? |
Вложений: 1
должна произойти замена выделенной части, что же ещё
|
dbs74,
не могу понять, чего вы хотите добиться. пока для меня это выглядит так ... function ff(s_id) { var sObj = document.getElementById(s_id); sObj.innerHTML = str; } |
http://joxi.ru/52aZzgXUkBn84A
или вы весь код не видите или ещё что-то html-ка приатаччена в zip-е я хотел заменить выделенный кусок который визуально совпадает с номером телефона html-кодом из переменной str |
dbs74,
ок, видимо я не понимаю вашей проблемы. |
Часовой пояс GMT +3, время: 16:00. |