在IE中创建范围而不选择或突出显示

时间:2012-09-06 16:06:09

标签: javascript internet-explorer replace highlight paste

我需要pasteHTML()而不是未突出显示的文字。我知道如果做mySelectedText.createRange().pasteHTML()这样的事情,那么我会得到我想要的但是如何为未选择的文字制作范围?在这种情况下我唯一拥有的只是光标/插入符号,它位于我要突出显示和替换的行中。谢谢你的帮助。

更新

This is one line.
|This is ano|ther line.|

| - 可能的插入位置。我需要突出整线,插入符号。没有选择任何文字。

1 个答案:

答案 0 :(得分:0)

我还不确定你真正需要什么。下面的(仅限IE)代码选择插入符/选择所在的行,并返回包含该行的textRange对象。

selectLine = function () {
    var range = document.selection.createRange(),
        origTop = range.offsetTop,
        origHeight = range.boundingHeight;      
    range.moveToElementText(range.parentElement()); 
    while (range.offsetTop !== origTop) {
        range.moveStart('character', 1);
    }
    while (range.boundingHeight !== origHeight) {
        range.moveEnd('character', -1);
    }
    range.select();
    return range;
}

此功能允许插入/字符/跨行选择,如果有可供选择,也可以使用不可编辑的元素。