我有这个文本编辑器 plunker example问题是,当我单击粗体按钮或任何其他按钮时,该按钮不显示可编辑 div 的状态,我知道如果我在 ng-mousedown 事件函数中向按钮添加一个类,则可以修复该问题,但这会成功如果我单击带有粗体文本的区域,并且该区域也应该向正确的工具栏按钮添加一个类,则无法解决问题,也许我应该使用类似于观察者的东西,但要观察什么?
更新
好吧,我做了一些挖掘,我正在尝试观察插入符的位置,以便我可以将正确的样式应用于文本编辑器的工具栏按钮,我考虑过 $watchers 但我从未使用过它们。
我正在使用的示例来自此 StackOverflow post帖子里有一个 Jsfiddle,但我做了一个 plunker AngularJS 示例展示了如何获取 contenteditable div 中的插入符位置。
有没有更好的方法来做到这一点,比如获取内部 contenteditable div 的 DOM 树,然后制作元素和位置的映射,然后使用数据绑定(bind)来控制工具栏中按钮的状态?
任何帮助,提前致谢。
最佳答案
我在这个SO post中找到了答案:
Rather than do all this by hand, the browser has methods to tell you if the current selection or caret is bold, italic or whatever:
document.queryCommandState()
(MSDN), for binary commands such as a bold and italic, anddocument.queryCommandValue()
(MSDN) for commands with a value, such as font-related commands.
关于javascript - 如何监控 contenteditable div 中的文本样式和格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15997439/