在 IE 8 中以编程方式选择文本区域中的文本

Posted

技术标签:

【中文标题】在 IE 8 中以编程方式选择文本区域中的文本【英文标题】:Select text in textarea programatically in IE 8 【发布时间】:2012-10-16 04:48:52 【问题描述】:

我一直在尝试根据开始和结束索引以编程方式在文本区域中选择文本,但由于某种原因,选择被一些字符位置偏移:

我的用户进行了初始手动选择,并将其存储到数据库中。 为了获得初始选择的开始/结束位置,我使用这里列出的方法Caret position in textarea, in characters from the start (由 Tim Down 回答)

我存储用户所做的选择,当他们返回页面时,我希望默认为他们之前的选择。

根据我使用 Tim Down 的函数提取的存储位置进行选择的代码如下:

  function SelectText(start,end) 
    var textArea = document.getElementById("textArea");

    var inputRange = textArea.createTextRange();
    inputRange.collapse(true);

    inputRange.moveStart("character", start);
    inputRange.moveEnd("character", end - start);

    inputRange.select();

问题似乎是由换行符/空格引起的。有谁知道如何根据开始和结束以编程方式在 IE 中正确进行选择?

【问题讨论】:

似乎选择每个换行符偏移一个字符 IE(和一般的 Windows)使用两个字符表示换行符:\r\n(不确定顺序)。因此,您可以在创建范围之前先用一个新行 \n 替换这两个字符的任何序列 【参考方案1】:

我不知道它是否对你有帮助,但你可以尝试使用由 Tim Down 开发的 RangyInputs js 库,可以使用以下网址:http://code.google.com/p/rangyinputs/

就我而言,我在我的一个项目中使用 Rangy(也是由 Tim Down 开发的)内容可编辑 div 库,它确实运行良好,对我帮助很大。

您可以在 WiKi 页面上找到有关支持的方法的文档:http://code.google.com/p/rangyinputs/wiki/Documentation

【讨论】:

谢谢。我将对这个库进行更多测试,但它看起来很有希望

以上是关于在 IE 8 中以编程方式选择文本区域中的文本的主要内容,如果未能解决你的问题,请参考以下文章

颜色:在 ie 中的文本上透明(使用覆盖技术突出显示文本区域中的文本)?

识别不同文本区域中的光标位置并在列表框中选择项目时插入文本

在文本区域中的光标位置之后插入文本

如何在android中以编程方式查找TextView的文本区域(高度/宽度)

将文本区域中的少量文本更改为粗体

在IE8中右键单击取消选择文本