小声的问一句:楼主的问题解决了吗?
我也在搞编辑器,忙了一个大晚上,w3c的range移动到空标签很容易的,setStartAfter方法传入的节点里并不需要一定有子节点的,只要offset设成0即可,rangesetStartAfter(strongNode,0),表示开始移动到strongNode的第一个子节点(并不一定有)之前,再collapse(true);合并到开头。
备注一下我对offset注释,如果也有人搜索到这里可以参考一下:
偏移量计算,节点和文字一样<span>AB</span><span>AB</span>中的位置:
0<span>[0]A[1]B[2]</span>1<span>[0]A[1]B[2]</span>2
由于发现IE8的TextRange光标移动到空标签处理不像w3c那么简单,我就搜索到这里了,怎样才能让TextRange移动到空标签里头啊,不知道楼主实现了没有,能分享一下吗?
<div id=test contenteditable=true></div>
<script>
windowonload=function(){
documentgetElementById("test")onkeydown=function(e){
//当前元素是(e||event)currentTarget
consolelog((e||event)currentTarget);
//标签名称是(e||event)currentTargettagName
consolelog((e||event)currentTargettagName);
}
}
</script>
输入位置错是因为计算选择内容或鼠标距离左边位数不统一。
还有不轻易丢失鼠标焦点即可保证不换输入位置。
js获取光标位置很简单啊,百度一下就可以。一般discuz编辑器有,我写有,但不想找了~
说实话这个功能我没作过,我想了一下,应该用以下方法可以实现。
你研究一下, 如果对你有所帮助,请采纳哦!
var textbox = documentgetElementById('id');
if(textboxsetSelectionRange){
textboxsetSelectionRange(startIndex,stopIndex);
}else if(textboxcreateTextRange){
var range=textboxcreateTextRange();
rangecollapse(true);
rangemoveStart('character',startIndex);
rangemoveEnd('character',stopIndex-startIndex);
rangeselect();
}
js
documentgetElementById(id)focus();
例如
<input id="shan" type="text" onchange ="return gaib(thisid)"/>
function gaib(id) {
var oo=documentgetElementById(id);
if (oovalue == 3) {
alert('输入错误');
oofocus();
}
}
jquery
$("#"+id)focus();
例如
<input id="shan" type="text" onchange ="return gaib(thisid)"/>
function gaib(id) {
var oo=$("#"+id);
if (ooval() == 3) {
alert('输入错误');
oofocus();
}
}
<html>
<head>
<meta >
以上就是关于js selection range 插入空节点后调整光标位置 - 富文本编辑器全部的内容,包括:js selection range 插入空节点后调整光标位置 - 富文本编辑器、js 触发onkeydown事件时候,获取光标所在元素或者获取光标所在标签名称、js插入内容到光标(ie下)不准确等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)