我正在修改一个编辑器,我突出了文本问题。
我有这个代码用于检查用户突出显示的内容(代码下面有更多详细信息):
function getSelectionHTML()
{
var iframe = document.getElementById(theEditorID);
var win, doc = iframe.contentDocument;
if(doc)
win = doc.defaultView;
else
{
win = iframe.contentWindow;
doc = win.document;
}
var userSelection;
if(win.getSelection)
{
userSelection = win.getSelection();
if(userSelection.getRangeAt)
var range = userSelection.getRangeAt(0);
else
{
var range = document.createRange();
range.setStart(userSelection.anchorNode, userSelection.anchorOffset);
range.setEnd(userSelection.focusNode, userSelection.focusOffset);
}
var clonedSelection = range.cloneContents();
var div = document.createElement('div');
div.appendChild(clonedSelection);
callIcons(div.innerHTML);
}
else if(doc.selection)
{
userSelection = document.selection.createRange();
callIcons(userSelection.htmlText);
}
};
当用户突出显示一些粗体文本和其他一些斜体文本时,我得到了这个输出:
<b>some text</b><i>some other text</i>
但是当用户只突出显示粗体文本时,我得到了这个输出(没有'粗体'标签):
some text
你可以在这里检查一下 - http://brownfolder.com/06/ 在突出显示某些文字后,您会看到警告。
您有什么想法我能解决这个问题吗?
提前致谢。
答案 0 :(得分:2)
浏览器在选择中是否包含周围标签时会有所不同。如果选择完全包含在标记内,它们通常不包括周围标记。可以从选择的开始走向DOM并检查每个元素是否是&lt; b&gt;。标签。但是,如果你正在使用的iframe使用了contenteditable,则无法保证它会以&lt; b&gt;加粗。标签。还有其他方式可以加粗文本:IE通常添加&lt; STRONG&gt;标签为粗体,Firefox和WebKit可能使用&lt; span style =“font-weight:bold&gt;。
最好在iframe文档上使用queryCommandState('bold')。