【问题标题】:Create range in IE without selection or highlight在 IE 中创建范围而不选择或突出显示
【发布时间】:2012-09-08 00:53:44
【问题描述】:

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

更新:

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

| - 可能的插入符号位置。我需要突出显示插入符号所在的整行。未选择任何文本。

【问题讨论】:

  • 需要更多信息,您的页面中未选择的文本可能比选择中的多。您想要包含在选择中的未选择文本究竟是什么以及在哪里?请提供这些选择的小 HTML-sn-p。

标签: javascript internet-explorer replace highlight paste


【解决方案1】:

我还不确定你真正需要什么。下面的(仅限 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;
}

此功能允许插入符号/字符/交叉线选择,并且如果有可用的选择,也适用于不可编辑的元素。

【讨论】:

    猜你喜欢
    • 2016-02-19
    • 1970-01-01
    • 2012-08-08
    • 2015-05-08
    • 2014-05-31
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多