2

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

var myElement = document.querySelector("#foo");

if (myElement[mustBeRepainted]) {
    // do stuff
}

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

我对它的实现方式并不太挑剔,尽管我希望有类似myElement.isDirtyor的东西paintQueue("myElement")

4

1 回答 1

2

如果您只想捕获属性更改而不是实际操作系统的绘制消息(例如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);
于 2013-10-22T02:24:45.360 回答