如何获取在使用 document.execCommand 突出显示文本时创建的元素

How to get the element(s) created when text is highlighted with document.execCommand

本文关键字:显示 文本 元素 创建 execCommand document 何获取 获取      更新时间:2023-09-26
如何使用

document.execCommand('BackColor', false, color)(或'HiliteColor')检索为使用突出显示的背景换行文本而创建的元素?作为参考,我正在使用 Tim Down 的解决方案来突出显示选定的文本:https://stackoverflow.com/a/2583895/494954。

我知道我可以在选择中获得一个节点,然后沿着链向上移动,直到找到具有我指定的背景颜色的元素,但我想知道是否有更优雅的解决方案?

实际上没有一个优雅的解决方案。您现在可以在 IE>= 9 和非 IE 浏览器中使用 DOM 突变事件,但将来很有可能会删除这些事件,以支持突变观察者。下面是使用 DOMNodeInserted 事件的演示。它仅检测已插入的元素,而不会过滤掉任何未突出显示元素的元素:

http://jsbin.com/joqofojetu/1/

可以使用

突变观察器实现类似的解决方案,但有两个缺点:首先,IE仅从版本11开始支持它们。其次,与突变事件不同,突变观察者不能保证同步触发,因此您必须等待一段时间才能处理收集的元素。