突出显示文本问题

时间:2011-02-22 19:24:24

标签: javascript select editor highlighting

我正在修改一个编辑器,我突出了文本问题。

我有这个代码用于检查用户突出显示的内容(代码下面有更多详细信息):

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/ 在突出显示某些文字后,您会看到警告。

您有什么想法我能解决这个问题吗?

提前致谢。

1 个答案:

答案 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')。