我发现的问题如下:
情况:我有整体div有内嵌块显示.里面是两个内置块显示的元素.
然后我添加(感谢JavaScript)a< br />两个元素之间.第二个是下一行,这是正常的行为.
越野车部分:< br />然后删除(JavaScript再次)和…显示不更改.看来整个div的框不重新计算.最后我有两个类似的标记,不会出现相同的方式(这有点问题,不是这样).
它在Firefox上工作正常(似乎是基于webkit的,因为Android浏览器的行为方式相同).所以我的问题是,有没有使用将会改变DOM的方法的解决方法?使用的库是jQuery.
测试用例here.
编辑:根据duri的建议,我在webkit bugzilla中填写了一个错误报告,这是here.但是我仍在寻找解决方法;
解决方法
方式我发现:从整体DIV中删除所有的孩子,然后追加所有除了BR:
function removeBr(){ var ahah=document.getElementById("ahah"); var childs=[],child; while(child=ahah.firstChild) { if(!child.tagName||child.tagName.toLowerCase()!=='br') childs.push(child); ahah.removeChild(child); } for(var i=0;i<childs.length;i++) ahah.appendChild(childs[i]); }
其他变体:
function removeBr(){ var node=$("#ahah")[0]; node.style.display='inline'; $("#ahah").children("br").remove(); setTimeout(function(){node.style.display='';},0); }