强制重绘IE11

时间:2015-02-05 12:03:20

标签: javascript primefaces

我已经在SO上阅读了至少一篇有关此事的有希望的帖子,即

Force DOM redraw/refresh on Chrome/Mac

我的IE11浏览器中的建议似乎不起作用。

我真正想要解决的是一个问题,即更新到v5.1导致我的一个数据表中的标题的克隆部分可见(尽管高度设置为0到:

<thead style="height:0;">

以下是我在Firefox中尝试过的内容。

首先,我通过css隐藏已经可见的thead。我之所以这样做,是因为thead没有跟随数据表中其他列的列边界,(在html中说它实际上不是与表的其余部分相同的表的一部分):

div[id*="contextualPartOfId"] .ui-widget-header.ui-datatable-scrollable-header {
display:none;

}

这部分在两种浏览器中都能正常工作。

由于想要的theads高度由style属性决定,我现在转向JavaScript:

首先,我搜索thead元素(或者更确切地说是唯一具有给定类名的元素)

第一次通话时,该元素通常不可用。所以我重试,直到找到元素。

然后我设置高度并尝试强制重绘。

        var hackPrimefaces51DoubleHeaderProblem = function() {
            if (document.getElementsByClassName('ui-datatable-scrollable-theadclone')[0]) {

                var thead = document.getElementsByClassName('ui-datatable-scrollable-theadclone')[0];

                thead.style.height = "50px";
                forceRedraw(thead);

            }
            else {
                console.log("about to set Timeout");
                window.setTimeout(hackPrimefaces51DubbelRubrikProblem, 100);
            }
        };

        var forceRedraw = function(aNode) {
            var pNode = aNode.parentNode;
            var n = document.createTextNode(' ');
            var oldDisplay = pNode.style.display;  

            pNode.appendChild(n);
            pNode.style.display = 'none';

            setTimeout(function() {
                pNode.style.display = oldDisplay;
                n.parentNode.removeChild(n);
            },120);
        };


        hackPrimefaces51DoubleHeaderProblem();

我希望通过上述方法获得成功的建议。

如果有人遇到这个问题,那么原因和/或可能的解决方法会更好。

0 个答案:

没有答案