可以重新测试重绘吗?

时间:2013-10-22 01:59:25

标签: javascript html css

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

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

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

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

虽然我希望有myElement.isDirtypaintQueue("myElement")之类的东西,但我对它的实施方式并不太挑剔。

1 个答案:

答案 0 :(得分:2)

如果您只想捕获属性更改而不是实际操作系统的绘制消息(例如WM_PAINT),您只需observe想要的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);