javascript - 如何监控 contenteditable div 中的文本样式和格式?

标签 javascript angularjs text-editor addeventlistener execcommand

我有这个文本编辑器 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, and document.queryCommandValue() (MSDN) for commands with a value, such as font-related commands.

关于javascript - 如何监控 contenteditable div 中的文本样式和格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15997439/

相关文章:

javascript - 无法将数值从 Javascript 转换为 php,不使用 <form>

javascript - dc.js 错误 : d3. 时间未定义

用于图表的 Javascript 转换对象

javascript - Angular Dir-Pagination 并调用 Controller 功能

javascript - 一段时间后隐藏带有angularjs表单验证的错误标签

log4j - 什么工具可用于读取 log4j 日志文件?

javascript - 尝试安装 firebase-tools 并收到奇怪的错误

javascript - 如何更改 iframe 谷歌地图的坐标以根据传递的坐标打印不同的结果

text - 如何在 Notepad++ 中显示列号?

java - 可以着色和突出显示的 swing 文本编辑器