Javascript 将光标位置设置为contenteditable div中的选定文本

Javascript 将光标位置设置为contenteditable div中的选定文本,javascript,text,html,cursor,contenteditable,Javascript,Text,Html,Cursor,Contenteditable,我有一个可编辑内容的div标记,这样用户就可以输入div。 如果用户选择某些文本使其加粗,则执行以下代码: browser.execute("document.execCommand(\"Bold\"); document.getElementById(\"EditDIV\").focus()"); 执行后,焦点将丢失,浏览器中的垂直滚动条将移动到浏览器顶部。 我希望光标停留在文本之前的位置 我尝试了以下方法: 存储选择位置x,y: 代码: 恢复选择位置: 代码: 但此代码会在浏览器中查

我有一个可编辑内容的div标记,这样用户就可以输入div。 如果用户选择某些文本使其加粗,则执行以下代码:

browser.execute("document.execCommand(\"Bold\"); 
document.getElementById(\"EditDIV\").focus()");  
执行后,焦点将丢失,浏览器中的垂直滚动条将移动到浏览器顶部。 我希望光标停留在文本之前的位置

我尝试了以下方法:

存储选择位置x,y:

代码:

恢复选择位置:

代码:

但此代码会在浏览器中查找选定文本相对于当前视图开头的位置。因此,光标保持在相同的位置,但文本向下移动

希望光标停留在选定的文本上。

什么是
browser.execute()
?另外,如果您所做的只是调用可编辑元素上的
document.execCommand()
focus()
,则没有浏览器会丢失光标位置,因此必须有更多的代码。browser.execute()是为java SWT浏览器执行javascript。我的问题是如何将焦点返回到单击粗体后停止的位置,即,如果突出显示某些文本并单击粗体,它将粗体显示文本,但焦点将不再存在。浏览器的滚动条移动到浏览器的开头。
cursorPos=document.selection.createRange().duplicate(); clickx = cursorPos.getBoundingClientRect().left; clicky = cursorPos.getBoundingClientRect().top;
cursorPos = document.body.createTextRange(); cursorPos.moveToPoint(clickx, clicky); cursorPos.select();