Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在可编辑div中设置光标在给定位置_Javascript_Jquery - Fatal编程技术网

Javascript 如何在可编辑div中设置光标在给定位置

Javascript 如何在可编辑div中设置光标在给定位置,javascript,jquery,Javascript,Jquery,我有一个div <div id="user_status" class="status expanddiv" onkeyup="username_Search('New','user_status');" contenteditable="true" data-text="What's on your mind?..."> Some Text will goes Here. </div> 这里会有一些文字。 当username\u Search函数调用时,它通过光

我有一个div

<div id="user_status" class="status expanddiv" onkeyup="username_Search('New','user_status');" contenteditable="true" data-text="What's on your mind?...">
 Some Text will goes Here.
</div>

这里会有一些文字。
当username\u Search函数调用时,它通过光标位于0位置。而我需要将光标停留在它的实际位置。我可以在调用此函数之前获取光标位置。但无法设置


ant one对此有解决方案吗

如果您使用的是Chrome或Firefox,那么下面的代码可以很好地完成任务。此代码未在IE或Safari中测试

我想setCaretPosition函数就是您想要的

函数getCaretPosition(editableDiv){ var caretPos=0,containerEl=null,sel,范围; if(window.getSelection){ sel=window.getSelection(); 如果(选择范围计数){ 范围=选择范围(0); if(range.commonAncestorContainer.parentNode==editableDiv){ caretPos=range.endOffset; } } } 返回caretPos; } 功能设置CaretPosition(ctrl,pos){ if(window.getSelection){ pos=(ctrl.textContent.length>pos?pos:ctrl.textContent.length); var selection=window.getSelection(); var range=document.createRange(); range.selectNodeContents(ctrl.childNodes[0]); range.endOffset=pos; selection.removeAllRanges(); 选择。添加范围(范围); 选择.折叠(ctrl.childNodes[0],位置); } } 函数用户名搜索(st、str) { var ctl=document.getElementById('user_status'); var pos=getCaretPosition(ctl); document.getElementById(“用户状态”).textContent =“DSSADSADSADSDFSTJDYJDRTYURTYSSERYDS”; 设置CaretPosition(ctl、pos); }

这里会有一些文字。

您是否正在更改用户名搜索功能中div的内容?是的,我正在更改。我正在将文本转换为url链接。比如:谷歌。。通过光标在0位置转换为链接后,其变为。需要设置光标位置还是返回当前光标位置?感谢您使用的浏览器?我希望所有浏览器都使用它。。。但目前使用的是chrome.Hi,在函数“setCaretPosition”中,它在这一行pos=(ctrl.textContent.length>pos?pos:ctrl.textContent.length)上的give me错误;错误是-未捕获类型错误:无法读取undefinei的属性“length”,我犯了一个愚蠢的错误。现在问题解决了。谢谢。如果问题解决了,您可以将其标记为答案。:)