我已经在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();
我希望通过上述方法获得成功的建议。
如果有人遇到这个问题,那么原因和/或可能的解决方法会更好。