доброго времени всем
вот код для рассмотрения
содержимое тэга 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
если собственно пытаться заменить просто текст, то всё также работает
заранее спасибо всем кто откликнется