Javascript document.createElement(“创建元素”)会失败吗?

Javascript document.createElement(“创建元素”)会失败吗?,javascript,error-handling,Javascript,Error Handling,如果我在错误的网站上提问(基于Javascript的问题,所以我很确定它在正确的位置),请重新定位 我目前正在处理一个即将完成并为客户设置的项目的错误捕获。我想知道Javascript中的以下行是否会失败 var element = document.createElement("someelement") 前提是: someelement是有效的HTML标记(div、a、h1等) 元素可以是任何非保留字且以字母开头的字符串 它所运行的设备是一个现代设备,RAM不是问题根据,如果标记名包含无

如果我在错误的网站上提问(基于Javascript的问题,所以我很确定它在正确的位置),请重新定位

我目前正在处理一个即将完成并为客户设置的项目的错误捕获。我想知道Javascript中的以下行是否会失败

var element = document.createElement("someelement")
前提是:

  • someelement
    是有效的HTML标记(
    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>
    
    
    
    如果确定此函数正在抛出错误,则可能应该检查所传递的字符串是否为
    !==调用
    createElement
    之前为null,因为这可能是问题的根源


    如果错误仍然出现,请检查字符串是否仅由字母a-z、下划线和连字符组成。

    如果无法分配所需的内存,我想它会失败。@Spudley这也是我唯一能想到的。这就是chrome特性,因为
    为“null”
    工作正常,
    null
    在firefox中工作。
    document.createElement(" ")
    
    Error: InvalidCharacterError: DOM Exception 5
    
    <undefined></undefined>