仅在 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(" "));
elems[e].appendChild(shim);
}
}
}
window.onload = fixWidth;
它在 IE8 上正常工作。但在 IE11 上不行。
这是IE8中的bug,IE11中没有,如
document.createElement(" ")
不应该在任何地方真正起作用,因为不间断 space 不是元素。
Chrome给出错误
Uncaught InvalidCharacterError: Failed to execute 'createElement' on
'element': The tag name provided (' '
) is not a valid name.
而且我怀疑几乎所有浏览器但是 IE8 会抛出一个错误
如果你想给元素添加一个不间断的space,你可以这样做
shim.innerHTML = shim.innerHTML + " ";
我试图在 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(" "));
elems[e].appendChild(shim);
}
}
}
window.onload = fixWidth;
它在 IE8 上正常工作。但在 IE11 上不行。
这是IE8中的bug,IE11中没有,如
document.createElement(" ")
不应该在任何地方真正起作用,因为不间断 space 不是元素。
Chrome给出错误
Uncaught InvalidCharacterError: Failed to execute 'createElement' on 'element': The tag name provided (
' '
) is not a valid name.
而且我怀疑几乎所有浏览器但是 IE8 会抛出一个错误
如果你想给元素添加一个不间断的space,你可以这样做
shim.innerHTML = shim.innerHTML + " ";