Ace曾经是Mozilla Skywriter,之前又是Mozilla Bespin。如果你愿意深入挖掘并基于它自己编写代码,那么Bespin的代码实际上非常简单易懂,但这有点像一个傻瓜任务。Canvas规范特别建议不要这样做:作者应避免使用canvas元素实现文本编辑控件。这样做有很多缺点:- 必须重新实现插入符号的鼠标定位。 - 必须重新实现插入符号的键盘移动(对于多行文本输入可能跨越多行)。 - 必须实现文本字段的滚动(对于长行水平滚动,对于多行输入垂直滚动)。 - 必须重新实现复制和粘贴等本机功能。 - 必须重新实现拼写检查等本机功能。 - 必须重新实现拖放等本机功能。 - 必须重新实现页面范围内的文本搜索等本机功能。 - 必须重新实现用户特定的本机功能,例如自定义文本服务。这几乎是不可能的,因为每个用户可能安装了不同的服务,并且可能存在无限数量的此类服务。 - 必须重新实现双向文本编辑。 - 对于多行文本编辑,必须为所有相关语言实现换行。 - 必须重新实现文本选择。 - 必须重新实现拖动双向文本选择。 - 必须重新实现平台本机键盘快捷键。 - 必须重新实现平台本机输入法编辑器(IME)。 - 必须重新实现撤消和重做功能。 - 必须重新实现辅助功能,例如插入符号或选择后的放大。这是一项巨大的工作,建议作者尽可能避免使用它们,而应改用input元素、textarea元素或contenteditable属性。
<canvas>
。它的前身Bespin曾经使用过,但是创作者们放弃了,因为很难做到完美。广泛认为,文本编辑是<canvas>
元素的不适当用法。 - Alohci