使用document.execCommand('BackColor', false, color)
(或'HiliteColor'
)时,如何检索创建的元素以包含突出显示背景的文本?作为参考,我使用Tim Down的解决方案来突出显示所选文本:https://stackoverflow.com/a/2583895/494954。
我知道我可以在选择中获得一个节点,然后上链直到找到一个具有我指定的背景颜色的元素,但我想知道是否有更优雅的解决方案?
答案 0 :(得分:1)
没有一个优雅的解决方案。您现在可以在IE> = 9和非IE浏览器中使用DOM mutation events,但这些事件很有可能在将来被删除,转而使用Mutation Observers。这是一个使用DOMNodeInserted
事件的演示。它仅检测已插入的元素,并且不会过滤掉任何不突出显示元素的元素:
http://jsbin.com/joqofojetu/1/
有可能使用变异观察器实现类似的解决方案,有两个缺点:首先,IE仅从版本11开始支持它们。其次,与突变事件不同,突变观察者不能保证同步发射,所以在处理你收集的元素之前你必须等待一段时间。