可以测试重新绘制

Can Repaint be tested?

本文关键字:绘制 新绘制 测试      更新时间:2023-09-26

目前是否有有效解析以下伪代码的 API?

var myElement = document.querySelector("#foo");
if (myElement[mustBeRepainted]) {
    // do stuff
}

也就是说,"脏"元素的想法,或者在下一次重新绘制时必须重新绘制或与其当前屏幕状态不同的元素。

我对它的实现方式不太挑剔,尽管我希望像myElement.isDirtypaintQueue("myElement")这样的东西.

如果你只想捕捉属性变化而不是实际操作系统的绘制消息(例如WM_PAINT),你可以简单地观察想要的dom元素:

function trackDomChanges(I_oHTMLObject) {
    //create an observer instance
    var observer = new MutationObserver(
        function(mutations) {
            mutations.forEach(
                function(mutation) { 
                    // play with mutation.attributeName, oldValue etc.
                }
            );
        }
    );
    observer.observe(I_oHTMLObject, { attributes: true, childList: false, characterData: false });
}
trackDomChanges(myElement);