javascript - 想要根据按键在多个内容可编辑的 div 之间移动光标
问题描述
所以我正在构建一个基于块的文本编辑器,我们输入的每个元素都是一个块。例如,如果我们要输入以下内容作为内容:
假设这是我需要的 html 输出。
你好
第一段
第二段
因此,在编辑器存储中,这些将存储为如下块:
[
{
"type": "text",
"content": "Hello There",
"element": "h1"
},
{
"type": "text",
"content": "First Paragraph",
"element": "p"
},
{
"type": "text",
"content": "Second Paragraph",
"element": "p"
}
]
在编辑器中,我将这些东西抽象化并允许用户以可视方式编辑内容,就像我们在文本编辑器中所做的那样,使用用户选择的标签上的 content-editable 属性。所以它本质上是一个所见即所得的类型编辑器。
现在我面临的问题是,就像我们在任何编辑器中使用箭头键(尤其是向上和向下)在内容中遍历一样,由于元素在物理上彼此不同,因此浏览器无法本地处理。那么我怎样才能通过点击键盘按钮(向上和向下)以编程方式导航光标,以便用户感觉它没有使用任何新系统而只是另一个文本编辑器。我已经尝试过使用窗口选择 API,目前我只达到了能够从一个块遍历到另一个块的程度(比如从第 1 段到标题),但是可以将位置设置为开始或结束,我无法找到如何将其设置到它所在的确切位置。
例如,假设光标在段落中的第三个字符之后,并且用户单击向上箭头键,它应该转到标题第三个字符等等。
对不起,一个很长的问题和描述。提前感谢您的任何回复。
解决方案
由于时间线的原因,我不得不放弃该功能,但确实找到了可行的方向。这是一个解释 Draft.js 背后的工作和想法的视频(由 Facebook 团队制作)
https://youtube.com/watch?v=feUYwoLhE_4
它提供了一种解决我们上面面临的问题的整体方法,以控制 React JS 中的内容可编辑。
推荐阅读
- ckeditor5 - 如何将“target”属性添加到ckeditor5中的`a`标签?
- r - 在R中导入excel文件时日期更改
- php - 使用 create_function php 读取外部变量
- oracle - 重命名索引影响
- python - Python:根据某些列过滤 numpy 值
- angular - ng2-carouselamos 左右图标不起作用
- javascript - 让模态框占据整个屏幕,而不仅仅是它所在的 iframe
- tsql - t-sql 将重复的十进制值表示为百分比
- javascript - rollupPluginBabelHelpers。引导错误
- r - R会话使用大量内存但工作区中没有大对象