仅在 IE 中 onload 时带有 appendChild 的 InvalidCharacterError

InvalidCharacterError with appendChild on onload in IE only

我试图在 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 上不行。

这是IE8中的bug,IE11中没有,如

document.createElement("&nbsp;")

不应该在任何地方真正起作用,因为不间断 space 不是元素。
Chrome给出错误

Uncaught InvalidCharacterError: Failed to execute 'createElement' on 'element': The tag name provided ('&nbsp;') is not a valid name.

而且我怀疑几乎所有浏览器但是 IE8 会抛出一个错误

如果你想给元素添加一个不间断的space,你可以这样做

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