获取文本节点外层样式
如何获取选中文本的样式是一个常见的难题。为了解决此问题,我们可以利用 JavaScript 的原生方法。
获取文本节点的父级元素
首先,我们通过 document.getSelection() 拿到选区,再通过 getRangeAt(0) 得到选区中的第一个范围。接着,我们可以利用 commonAncestorContainer 属性拿到该范围中的所有祖先元素的公共祖先容器。对于文本节点,其 commonAncestorContainer 正是其父级元素。
获取元素样式
立即学习“Java免费学习笔记(深入)”;
获取到父级元素后,我们可以通过 window.getComputedStyle(element).color 来得到该元素的颜色样式。
富文本节点样式
如果选取的部分包含富文本节点,我们需要进一步处理。我们可以遍历该父级元素的子节点,并依次获取其颜色样式。
代码示例
以下代码示例展示了如何实现此功能:
let range = document.getSelection().getRangeAt(0);
let commonAncestorContainer = range.commonAncestorContainer;
// 如果是文本节点,则获取它的父级元素
if (commonAncestorContainer.nodeType === 3) {
commonAncestorContainer = commonAncestorContainer.parentElement;
}
// 获取整体节点的样式
console.log(window.getComputedStyle(commonAncestorContainer).color);
// 获取富文本节点的样式
commonAncestorContainer.children.forEach(child => {
console.log(window.getComputedStyle(child).color);
});










