【发布时间】:2021-04-05 15:15:40
【问题描述】:
我想用 html contenteditable div 替换所有出现的事件。我需要用标签替换出现以使用 css 自定义它。 但是当我尝试用跨度替换时,MutationObserver 会生成一个无限循环......
document.designMode = "on";
var text = document.getElementById('text');
let observer = new MutationObserver(mutations =>
mutations.forEach(mutation => {
console.log(text.textContent);
// let a = "a";
// a.style.color = "red";
text.textContent = text.textContent.replace('/', '<span>/</span>');
observer.disconnect();
const range = document.createRange();
const textNode = text.firstChild;
range.setStart(textNode, text.textContent.length);
range.setEnd(textNode, text.textContent.length);
const sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
// observer.disconnect();
})
);
observer.observe(text, {
childList: true,
characterData: true,
subtree: true,
});
<p id="text" contenteditable="true">I'm a text will be change</p>
【问题讨论】:
标签: javascript dom dom-events contenteditable mutation-observers