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>
相关推荐
ytttr87310 分钟前
基于 C# WinForm 实现的 电影院售票系统
开发语言·c#
CC码码23 分钟前
告别杂乱数字:用 Intl.NumberFormat 打造全球友好的前端体验
前端·javascript·面试
Tony Bai25 分钟前
Goroutine “气泡”宇宙——Go 并发模型的新维度
开发语言·后端·golang
kandee32 分钟前
vscode混淆js文件的插件用法(jshaman)
javascript·ide·vscode
Larry_Yanan34 分钟前
Qt多进程(二)QProcess+stdio
开发语言·qt
码农葫芦侠36 分钟前
Qt 跨线程内存管理陷阱:QSharedPointer、deleteLater() 与 QPointer 的致命组合
开发语言·数据库·qt
d111111111d40 分钟前
C语言中,malloc和free是什么,在STM32中使用限制是什么,该如何使用?
c语言·开发语言·笔记·stm32·单片机·嵌入式硬件·学习
网安_秋刀鱼43 分钟前
【java安全】shiro鉴权绕过
java·开发语言·安全
白昼流星!1 小时前
C++内存四区与new操作符详解
开发语言·c++
tyatyatya1 小时前
MATLAB三维绘图教程:plot3/mesh/surf/contour函数详解与实例
开发语言·matlab