Javascript document.createElement(“创建元素”)会失败吗?
如果我在错误的网站上提问(基于Javascript的问题,所以我很确定它在正确的位置),请重新定位 我目前正在处理一个即将完成并为客户设置的项目的错误捕获。我想知道Javascript中的以下行是否会失败Javascript document.createElement(“创建元素”)会失败吗?,javascript,error-handling,Javascript,Error Handling,如果我在错误的网站上提问(基于Javascript的问题,所以我很确定它在正确的位置),请重新定位 我目前正在处理一个即将完成并为客户设置的项目的错误捕获。我想知道Javascript中的以下行是否会失败 var element = document.createElement("someelement") 前提是: someelement是有效的HTML标记(div、a、h1等) 元素可以是任何非保留字且以字母开头的字符串 它所运行的设备是一个现代设备,RAM不是问题根据,如果标记名包含无
var element = document.createElement("someelement")
前提是:
是有效的HTML标记(someelement
)div、a、h1等
可以是任何非保留字且以字母开头的字符串元素
- 它所运行的设备是一个现代设备,RAM不是问题根据,如果标记名包含无效字符(空白字符等),则会引发DomeException
在Firefox中,document.createElement只有在传递无效字符时才会失败。空或未定义是可以的
在Chrome中,document.createElement在传递null或无效字符时将失败并抛出InvalidCharacterError。未定义是可以的
正如一些用户在评论中指出的,由于内存资源等原因,它总是会失败,但您无法采取任何措施来防止这种情况
因此,如果
,它将永远不会失败 您可以使用此代码段查找无效字符:someelement是一个有效的HTML标记(div、a、h1等)
for(var i = 0; i < 200; i++) { var chr = String.fromCharCode(i); var msg = i + ". " + chr + ": "; try { var elm = document.createElement(chr); msg += "OK"; } catch(e) { msg += "FAIL"; } console.log(msg); }
及 无效字符为,例如空格:for(变量i=0;i<200;i++){ var chr=String.fromCharCode(i); var msg=i+“+chr+”:“; 试一试{ var elm=document.createElement(chr); msg+=“正常”; } 捕获(e) { msg+=“失败”; } 控制台日志(msg); }
document.createElement(" ")
我所知道的唯一例外是以下情况(请注意,我使用的是Chrome): 当传递对象或数组作为参数时,会出现此异常。当您传递包含无效HTML字符的字符串(如@!#?)时,它也会失败代码> 如果您传递undefined,或未指定参数,它将创建一个undefined元素
<undefined></undefined>
如果确定此函数正在抛出错误,则可能应该检查所传递的字符串是否为!==调用
之前为null,因为这可能是问题的根源createElement
如果错误仍然出现,请检查字符串是否仅由字母a-z、下划线和连字符组成。如果无法分配所需的内存,我想它会失败。@Spudley这也是我唯一能想到的。这就是chrome特性,因为
工作正常,为“null”
在firefox中工作。null
document.createElement(" ")
Error: InvalidCharacterError: DOM Exception 5
<undefined></undefined>