首页 > web前端 > js教程 > 正文

如何在焦点后保持光标位置在内容可编辑 Div 中?

DDD
发布: 2024-11-10 00:37:02
原创
482 人浏览过

How to Keep the Cursor Position in a Content Editable Div After Focus?

在 ContentEditable <div> 上设置光标位置

问题:

Content editable

<div>每次重新获得焦点时,元素往往会将光标位置重置到文本的开头。当光标需要恢复到之前的位置时,这可能是不可取的。

解决方案:

要解决此问题,可以采用以下跨浏览器解决方案:

第 1 步:保存选择

附加事件侦听器(onmouseup 和onkeyup) 到

<div>;释放鼠标按钮或释放某个键时捕获当前光标位置 (savedRange)。

步骤 2:恢复选择

步骤 2 ( a): On Focus

将事件监听器 (onfocus) 附加到

<div>恢复之前保存的选择。

步骤 2 (b):单击时(可选)

要在单击时保留选择,需要执行其他步骤:

  • 注册取消点击事件的onclick和onmousedown事件监听(cancelEvent())。
  • 在 cancelEvent() 内,恢复保存的选择并将 isInFocus 设置为 true。
  • 在模糊 (onblur) 时,将 isInFocus 设置为 false。

完整代码(包括选择恢复点击):

<div>
登录后复制
var savedRange, isInFocus;

function saveSelection() {
  // ... (Selection saving logic as described in Step 1)
}

function restoreSelection() {
  isInFocus = true;
  document.getElementById("area").focus();

  if (savedRange != null) {
    // ... (Selection restoration logic as described in Step 2)
  }
}

function onDivBlur() {
  isInFocus = false;
}

function cancelEvent(e) {
  if (isInFocus === false && savedRange != null) {
    // ... (Event cancellation logic as described in Step 2 (b))
  }
}
登录后复制

以上是如何在焦点后保持光标位置在内容可编辑 Div 中?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
上一篇:如何在不切换焦点的情况下在后台打开新选项卡? 下一篇:在 React 中构建一款可靠的 Pokémon 游戏:开发者的冒险!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
来自于 2024-04-16 10:10:18
0
0
1615
相关专题
更多>
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板