答案 0 :(得分:4)
Ace曾经是Mozilla Skywriter,曾经是Mozilla Bespin。
Bespin的代码实际上很容易理解,如果你愿意挖掘它并根据它自己创建,但这是一个傻瓜的差事。 Canvas规范实际上建议具体反对:
作者应避免实施文字 使用画布编辑控件 元件。这样做有很多 缺点:
必须使用插入符号的鼠标位置 重新实现。
插入符号的键盘运动必须 重新实现(可能跨越 行,用于多行文本输入)。
滚动文本字段必须是 实施(横向长期 垂直线,多线 输入)。
原生功能,例如复制和粘贴 必须重新实现。
本地功能,例如拼写检查 必须重新实现。
原生功能,例如拖放功能 必须重新实现。
原生功能,例如页面范围的文字 搜索必须重新实现。
特定于用户的原生功能, 例如自定义文本服务 重新实现。这很接近 不可能,因为每个用户可能有 安装了不同的服务,以及 有一个无限的可能 这样的服务。
必须进行双向文本编辑 重新实现。
对于多行文字编辑,请输入 必须为所有人实施包装 相关语言。
必须进行文字选择 重新实现。
拖动双向文本 选择必须重新实现。
平台原生键盘快捷键 必须重新实现。
平台原生输入法编辑器 (IME)必须重新实现。
必须撤消和重做功能 重新实现。
辅助功能,例如 插入符号后的放大倍数 选择必须重新实现。 这是一项庞大的工作,而且 作者受到最强烈的鼓励 相反,避免做任何一件事 使用input元素,textarea 元素,或者是满足的 属性。
答案 1 :(得分:1)
使用chrome显示现场演示,他们使用div和span来实现这一目标。闪烁的光标是一个div,似乎定期在隐藏和可见之间切换。我认为他们只是检查事件中按下的键并将其写入该行的相应跨度。