0

当我用“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”之间。

4

1 回答 1

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);
    ....  
}

我不确定您在选择中想要的最终文本是什么。如果需要,您可以移动与 with方法myRange相关的原件,或用于折叠 and 之间的范围。chkRangesetEndPoint()collapse()ab

您可以在 MSDN 中找到其他setEndPoint()方法和属性:遍历和范围TextRange

于 2012-06-12T14:58:05.403 回答