仅在IE中的onload上使用appendChild的InvalidCharacterError

时间:2015-04-20 14:02:45

标签: javascript html internet-explorer onload appendchild

我正在尝试在IE11中执行Javascript函数,但是我在appendChild上遇到了一个InvalidCharacterError。

function fixWidth(){
   var elems=document.getElementsByTagName("*");
   for(e=0; e<elems.length; e++){
      var eCurStyle = elems[e].currentStyle;
      var l_minWidth = (eCurStyle.minWidth) ? eCurStyle.minWidth : eCurStyle.getAttribute("min-width"); 
      if(l_minWidth && l_minWidth != 'auto'){
         var shim = document.createElement("DIV");
         shim.style.cssText = 'margin:0 !important; padding:0 !important; border:0 !important; line-height:0 !important; height:0 !important; BACKGROUND:RED;';
         shim.style.width = l_minWidth;
         shim.appendChild(document.createElement("&nbsp;"));
         elems[e].appendChild(shim);
      }
   }
}
window.onload = fixWidth;

它在IE8上正常工作。但不是IE11。

1 个答案:

答案 0 :(得分:2)

这是IE8中的错误,而不是在IE11中,如

document.createElement("&nbsp;")

不应该在任何地方工作,因为不间断的空间不是元素 Chrome提供了错误

  

未捕获的InvalidCharacterError:无法执行&#39; createElement&#39;上   &#39;元素&#39;:提供的标记名称('&nbsp;')不是有效名称。

我怀疑几乎所有的浏览器 IE8都会引发错误

如果要为元素添加不间断空格,可以执行

shim.innerHTML = shim.innerHTML + "&nbsp;";