我有一个代码可以将元素包裹在文本周围,它可以正常工作,直到我在编辑器中尝试以下格式:
<u><strong>T</strong>es<strong>t</strong></u>
它会自动在带下划线的元素之前和之后添加两个空的强元素,如下所示:
<strong></strong>
<u><strong>T</strong>es<strong>t</strong></u>
<strong></strong>
这是我使用的代码,我的按钮具有像 wrap('strong') 之类的操作:
function wrap(tagName)
{
var selection;
var elements = [];
var ranges = [];
var rangeCount = 0;
if (window.getSelection)
{
selection = window.getSelection();
if (selection.rangeCount)
{
rangeCount = selection.rangeCount;
for (var i=0; i<rangeCount; i++)
{
ranges[i] = selection.getRangeAt(i).cloneRange();
elements[i] = document.createElement(tagName);
elements[i].appendChild(ranges[i].extractContents());
ranges[i].insertNode(elements[i]);
ranges[i].selectNode(elements[i]);
}
selection.removeAllRanges();
for (var i=0; i<ranges.length; i++)
{
selection.addRange(ranges[i]);
}
}
}
}