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>
相关推荐
不负岁月无痕7 小时前
STL -- C++ 红黑树封装 Map 和 Set
java·c语言·开发语言·c++·面试
miss7 小时前
海康威视 IoT 平台前端实战:视频流、海量设备与实时数据可视化
前端·javascript·物联网
mONESY7 小时前
MCP 协议实战博客:跨进程、跨语言可复用 AI 工具标准化方案
javascript
小园子的小菜7 小时前
Java核心基础:反射与泛型底层原理及实战用法详解
java·开发语言
十五年专注C++开发7 小时前
C++之std::numeric_limits介绍
开发语言·c++·limits
2501_925963387 小时前
Hi3516 + WS73 SDIO Wi-Fi 适配笔记
java·开发语言
CoderYanger7 小时前
视频切割脚本(Python版)
linux·开发语言·windows·后端·python·程序人生·职场和发展
辞旧 lekkk7 小时前
CMake工程指南(一)
linux·运维·服务器·开发语言·qt·学习·萌新
糖墨夕7 小时前
第一章:为什么你要学 AI Agent?—— 从"切图仔"到全栈的进化之路
前端·javascript·vue.js
小七在进步8 小时前
数据结构:用栈实现队列
开发语言·数据结构