选择文本范围IE,startposition更改

时间:2012-06-12 07:59:59

标签: internet-explorer contenteditable textselection

当我选择一些带有“shift + arrow_left”的文字时,我的起始位置会发生变化,让我在示例中解释一下:

示例: - contenteditable div - 由我自己插入charcode 0182(¶)=变量:hardReturn

div中的

文字 测试¶ ABC

按键上的

代码+ arrow_left:

    var myRange = document.selection.createRange(); 
myRange.moveStart('character', -1); 
var charVoor = myRange.text.substring(0, 1);

if(charVoor == hardReturn){
    myRange.moveEnd('character', -1);
    myRange.select();   
}else{
} 

所以我的问题: 我的光标在“b”和“c”之间,我开始选择......我在选择下得到“ab”,然后我在左边做了另一个选择,我的选择将在“¶”之前自动跳转,但之后我的我的选择的起始位置在“¶”之前,而不是在“b”之间。 “c”我开始的地方。

1 个答案:

答案 0 :(得分:0)

您可以使用TextRange对象的克隆来检查hardReturn

var myRange = document.selection.createRange();
var chkRange = myRange.duplicate();
chkRange.moveStart('character', -1); 
var charVoor = chkRange.text.substring(0, 1);

if(charVoor == hardReturn){
    chkRange.moveEnd('character', -1);
    ....  
}

我不确定您在选择中想要的最终文本是什么。如果需要,您可以使用myRange方法移动与chkRange相关的原始setEndPoint(),或使用collapse()折叠a和{{1}之间的范围}}

您可以在MSDN: Traversal and Range

b中找到setEndPoint()以及其他方法和属性