(function () {
const observer = new MutationObserver(function (mutations) {
mutations.forEach(function (m) {
let parent = m.target && m.target.parentNode;
while (parent) {
if (parent.classList && parent.classList.contains('notify-change')) {
break;
}
parent = parent.parentNode;
}
if (!parent) return;
parent.classList.add('in');
setTimeout(function () {
try {
parent.classList.remove('in');
} catch (err) {
}
}, 300);
});
});
observer.observe(document.body, {subtree: true, characterData: true, characterDataOldValue: true});
})();
function test(){
Array.from(document.querySelectorAll(".notify-change"))
.forEach(e=>
e.innerHTML = ["lorem", "ipsum", "sit" , "amet"][Math.floor(Math.random() * 4)]
);
}
setInterval(test, 1000);
test();
.notify-change {
transition: background-color 300ms ease-out;
background-color:transparent;
}
.notify-change.in{
background-color: yellow !important;
}
<div>Lorem ipsum dolor sit amet, eu quod duis eius sit, duo commodo impetus an, vidisse cotidieque an pro. Usu dicat invidunt et. Qui eu <span class="notify-change">Ne</span> impetus electram. At enim sapientem ius, ubique labore copiosae sea eu, commodo persecuti instructior ad his. Mazim dicit iisque sit ea, vel te oblique delenit.
Quo at <span class="notify-change">Ne</span> saperet <span class="notify-change">Ne</span>, in mei fugit eruditi nonumes, errem clita volumus an sea. Elitr delicatissimi cu quo, et vivendum lobortis usu. An invenire voluptatum his, has <span class="notify-change">Ne</span> incorrupte ad. Sensibus maiestatis necessitatibus sit eu, tota veri sea eu. Mei inani ocurreret maluisset <span class="notify-change">Ne</span>, mea ex mentitum deleniti.
Quidam conclusionemque sed an. <span class="notify-change">Ne</span> omnes utinam salutatus ius, sea quem necessitatibus no, ad vis antiopam tractatos. Ius cetero gloriatur ex, id per nisl zril similique, est id iriure scripta. Ne quot assentior theophrastus eum, dicam soleat eu ius. <span class="notify-change">Ne</span> vix nullam fabellas apeirian, nec odio convenire ex, mea at hinc partem utamur. In cibo antiopam duo.
Stet <span class="notify-change">Ne</span> no mel. Id sea adipisci assueverit, <span class="notify-change">Ne</span> erant habemus sit ei, albucius consulatu quo id. Sit oporteat argumentum ea, eam pertinax constituto <span class="notify-change">Ne</span> cu, sed ad graecis posidonium. Eos in labores civibus, has ad wisi idque.
Sit dolore <span class="notify-change">Ne</span> ne, vis eu perpetua vituperata interpretaris. Per dicat efficiendi et, eius appetere ea ius. Lorem commune mea an, at est exerci senserit. Facer viderer vel in, etiam putent alienum vix ei. Eu vim congue putent constituto, ad sit agam <span class="notify-change">Ne</span> integre, his ei veritus tacimates.</div>
setInterval
不断更新组件。而我看到你应用了基于componentDidUpdate
的答案,但它在我的示例中无法正常工作。你可以在这里看到它。 - cn007b