Javascript监控元素样式变化

方法是使用MutationObserver观察者,可以监控元素的样式变化,并执行回调。

示例代码如下,

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="myElement">
        Hello!
    </div>
    <input type="button" value="变化样式!" onclick="changeStyle()">
    <script>
        // 选择要观察的目标节点
        const targetNode = document.getElementById('myElement');

        // 创建一个回调函数,当观察到变化时会调用
        const callback = (mutationsList, observer) => {
            for (let mutation of mutationsList) {
                if (mutation.type === 'attributes' && mutation.attributeName === 'style') {
                    targetNode.innerHTML+="元素样式发生变化:", targetNode.style.color
                }
            }
        };
        //typescript的写法:
        //const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) =>{}

        // 创建一个观察者实例并传入回调函数
        const observer = new MutationObserver(callback);

        // 配置观察选项
        const config = {
            attributes: true // 观察属性变化
        };

        // 开始观察目标节点
        observer.observe(targetNode, config);


        function changeStyle() {
            targetNode.style.color = 'red'; // 这将触发上面的回调
        }

    </script>
</body>
</html>
相关推荐
漠月瑾-西安1 分钟前
JavaScript 字符串处理技巧:substring 与 indexOf 的灵活组合
javascript·前端开发·indexof·代码优化·substring·字符串处理
tryCbest3 分钟前
Python之FastAPI 高级特性总结与完整项目实战
开发语言·python·fastapi
wjs20243 分钟前
HTML5 Web SQL 深入解析
开发语言
庞轩px5 分钟前
Java基础概念四连问:==与equals、hashCode约定、接口vs抽象类、深拷贝vs浅拷贝
java·开发语言
海上彼尚8 分钟前
Nuxt4 官网访问来源统计的实现
开发语言·前端·javascript
西门吹牛9 分钟前
RV1126B移植mosquitto并且写C语言调用
c语言·开发语言·json
三*一10 分钟前
mapbox 基于 Turf.js 实现高精度多边形分割(支持带空洞 / 坐标无损)
开发语言·前端·javascript·vue.js·mapbox gl
搞技术的雪中飞11 分钟前
Java Lambda表达式实战讲解:从冗余到高效,解锁开发新姿势
java·开发语言·后端
Benszen13 分钟前
KVM虚拟化技术深度解析
开发语言·perl
luanma15098015 分钟前
PHP vs Lua:脚本语言核心差异解析
开发语言·php·lua