0

我正在使用以下函数在 contenteditable div 中获取选定的文本范围。这在 IE 中可以正常工作,但在 Firefox 和 Chrome 中不行。

谁能告诉我我需要如何调整它以便它在 FF 和 Chrome 或至少其中一个(除了 IE)中工作?它可以在当前版本中运行就足够了。这样做的想法是通过另一个从这里获取“selTxt”的函数来替换选定的文本。

获取选择的功能(在 IE 中工作):

function GetSelection() 
{
selTxt = '';

if (typeof window.getSelection != "undefined") 
{
    var sel = window.getSelection();
    if (sel.rangeCount) 
    {
        var container = document.createElement('div');
        for (var i = 0, len = sel.rangeCount; i < len; ++i) 
        {
            container.appendChild(sel.getRangeAt(i).cloneContents());
        }
        selTxt = container.innerHTML;
    }
} 
else if (typeof document.selection != 'undefined') 
{
    if (document.selection.type == 'Text') 
    {
        selTxt = document.selection.createRange().htmlText;
    }
}
return selTxt;
}

替换选择的功能(这似乎是问题):

function EditBold()
{
    var newTxt = '';
    btnID = 'btnBold';

    GetSelection();     

    if (selTxt.toLowerCase().indexOf('<strong>') == -1)
    {
        document.selection.createRange().pasteHTML("<strong>" + selTxt + "</strong>");
    }
}

非常感谢您对此提供的任何帮助,蒂姆。

4

1 回答 1

1

selTxt您在函数中使用了一个变量EditBold(),但没有在函数内部声明它。如果该值应该是 GetSelection() 返回的值,请使用以下命令:

var selTxt = GetSelection();
于 2013-11-14T17:58:10.977 回答