当我选择一些带有“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”我开始的地方。
答案 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}之间的范围}}
b
中找到setEndPoint()
以及其他方法和属性