当innerHTML改变时,Chrome不会刷新div大小

时间:2016-10-04 20:34:05

标签: javascript html css google-chrome

问题是,

“当div调整大小后,如何在Chrome中正确显示样式后才能拥有CSS?”

“最近有没有人与Chrome有任何问题,从JavaScript更改elments innerHTML后元素无法正确显示?”

,或者

“有没有人知道Chrome浏览器中记录的任何错误调整大小(带链接)?”

“有没有人知道这个问题有一个好的解决方法?”

我有一个聊天SDK,可以进行泡泡聊天。

最近我注意到当聊天气泡调整大小时,气泡小尾巴无法正确显示。 它只发生在Chrome,Firefix,IE等上都可以

好像是一个Chrome错误,我确信它曾经工作...... :( 但不知道这个bug会以多长时间保持这种状态......

文本更新时的气泡是什么样的

enter image description here

应该是什么样的,

enter image description here

我有一个黑客来修复它,通过将父div填充更改为不同的东西,然后设置超时以将其更改回来(仅适用于超时)

任何人都知道更好的方法来解决这个问题,或者在Chrome中出现这种情况并且是否会修复它?

// Fix Chrome bug,
if (SDK.isChrome()) {
    var padding = document.getElementById(this.prefix + 'response').parentNode.parentNode.style.padding;
    document.getElementById(this.prefix + 'response').parentNode.parentNode.style.padding = "7px";
    setTimeout(function() {
        document.getElementById(this.prefix + 'response').parentNode.parentNode.style.padding = padding;
    }, 10);
}

尾部的CSS是,

bubble:before { content:''; position:absolute; bottom:0px; left:40px; border-width:20px 0 0 20px; border-style:solid; border-color:black transparent; display:block; width:0;}
bubble:after { content:''; position:absolute; bottom:3px; left:42px; border-width:18px 0 0 16px; border-style:solid; border-color:white transparent; display:block; width:0;}

2 个答案:

答案 0 :(得分:0)

// Fix Chrome bug,
if (SDK.isChrome()) {
    var padding = document.getElementById(this.prefix + 'response').parentNode.parentNode.style.padding;
    document.getElementById(this.prefix + 'response').parentNode.parentNode.style.padding = "7px";
    setTimeout(function() {
        document.getElementById(this.prefix + 'response').parentNode.parentNode.style.padding = padding;
    }, 10);
}

是唯一的解决方案。

答案 1 :(得分:0)

你可以通过设置父高度和气泡的滚动高度来尝试这样的事情,

// Fix Chrome bug,
function fixChromeBug(){
    if (SDK.isChrome()) {
        // this is your bubble element and change accordingly
        var bubble = document.getElementById('bubble');
        // Below should be an actual parent
        var parent = bubble.parentNode;
        // or this if required
        //var parent = bubble.parentNode.parentNode;
        parent.style.height = bubble.scrollHeight + parent.style.padding + 'px';
    }

}
    setTimeout(function() {
      fixChromeBug();
      document.getElementById('imageIfAny').onload = fixChromeBug;
   }, 1);