tinymce中的颜色选择器,选择后只有下划线变了颜色,UI要求字体也变色。下划线和上面的字母都是svg中的path,没有change之类的事件可以监听。
<editor
@onInit="init"
></editor>
init() {
this.addAttrListener()
},
/* 监听插件颜色属性变化时,将字母和下划线统一变色 */
addAttrListener() {
const target = document.getElementById('tox-icon-text-color__color')
if (!target) {
// 这个是插件内的元素,$nextTick无法获取,setTimeout获取成功时间在1s以上。
setTimeout(() => {
this.addAttrListener()
}, 200)
return
}
// 实例化MutationObserver
let attrListener = new MutationObserver((mutations) => {
let colorDom = mutations[0].target
let color = colorDom.getAttribute('fill')
colorDom.nextSibling.setAttribute('fill', color)
})
// 监听dom的属性,仅监听fill属性的改变。
attrListener.observe(target, { attributes: true, attributeFilter: ['fill'] });
},
效果
参考:这位大神的总结