简单的文本编辑器,在chrome中具有令人难以置信的奇怪行为

时间:2013-04-12 09:15:02

标签: javascript angularjs text-editor contenteditable rich-text-editor

我正在尝试制作类似这个简单文本编辑器的东西:
contenteditable text editor
我正在使用AngularJS v1.1.4它在firefox lates上工作正常,但在chrome最新的按钮不起作用。这是一个plunker example

更新

问题比我想象的要复杂得多。

火狐:

具有contenteditable div的文本编辑器的示例在某种程度上起作用:
单击选中文本的粗体按钮时,文本变为粗体,但光标或插入符号(使用键盘键入时移动的内容)并不总是可见。
但是当使用iframe方法时,iframe是不可点击的。

铬:

具有contenteditable div的文本编辑器的示例在某种程度上起作用:
当我单击带有文本选择的粗体按钮时没有任何反应,但是当我通过控制台调用命令时它会起作用(很奇怪)。
iframe方法在这里工作正常。

要查看示例:

任何帮助,提前谢谢。

1 个答案:

答案 0 :(得分:2)

要在Chrome中使用,您必须使用ng-mousedown而不是ng-click

由于非常简单的原因,它在非帧模式下不能与ng-click一起使用。单击按钮以设置文本格式时,焦点将从可编辑区域中丢失,并且在执行命令时不会选择任何文本。但是mousedown事件发生在焦点丢失之前,因此你最终会从编辑器中失去焦点和选择,但是在焦点丢失之前就会执行命令。