2013-10-19 14 views
5

私は間違ったサイト(JavaScriptベースの質問、私はそれが正しい場所にいると確信しているので)に尋ねている場合はこれを再配置してください。document.createElement( "")はこれまでに失敗しますか?

は、私は現在、エラーはすぐに完了し、クライアントのために設定されるプロジェクトに引っ掛かるを扱っています。私はJavascriptで次の行が失敗するかどうか疑問に思っていますか?

  • someelementが有効なHTMLタグ(div, a, h1, etc
  • elementが予約語ではなく、文字で始まる任意の文字列にすることができます:仮定すると

    var element = document.createElement("someelement") 
    

    。それが実行されている

  • デバイスは、近代的なデバイスであり、RAMは問題<ではありません - EDIT

それが今まで失敗しますか?そしてもしそうなら、それは何を返すでしょうか?

注:ソースがある場合は素晴らしいでしょう。 tagNameには、無効な文字(空白文字など)が含まれている場合

+2

私はそれが必要なメモリを割り当てることができない場合は失敗すると思う。 – Spudley

+0

@Spudleyそれは私が考えることができる唯一のものです。 –

答えて

5

http://www.w3.org/TR/DOM-Level-2-Core/core.html

Element   createElement(in DOMString tagName) 
             raises(DOMException); 

そして

Exceptions 
DOMException 

INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character. 

無効な文字は、例えばありますスペース:、あなたがnullを渡すとき

Error: InvalidCharacterError: DOM Exception 5 

この例外が発生:

document.createElement(" ") 

http://jsfiddle.net/yRY6Q/

2

the specによると、のDOMExceptionが発生します。

Firefoxでは、無効な文字が渡された場合にのみdocument.creatElementが失敗します。 nullまたはundefinedはOKです。

Chromeで、のdocument.createElementは失敗し、nullまたは無効な文字を渡すときInvalidCharacterErrorをスローします。未定義はOKです。

一部のユーザーがコメントで指摘したように、それは常にメモリリソースなどのために失敗することができますが、それを防ぐために何もすることができません。

ので、someelement is a valid HTML tag (div, a, h1, etc)場合、それは失敗することはありません。

あなたは無効な文字を見つけるために、このスニペットを使用することができます。

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); 
} 
1

私が知っ唯一の例外は、(私はChromeを使っていることに注意してください)以下でありますオブジェクトまたは配列をパラメータとして使用します。また、無効なHTML文字(たとえば、@!#?)を含む文字列を渡すと失敗します。

未定義を渡すか、パラメータを指定しないと、未定義の要素が作成されます。

<undefined></undefined> 

あなたは、この関数はエラーをスローしていることを確認している場合は、おそらくそれはおそらくあなたの問題の原因であるとして、あなたが渡している文字列は、createElementを呼び出す前!== nullであるかどうかをチェックする必要があります。

エラーが引き続き発生する場合は、文字列がa〜z、アンダースコア、ハイフンのみで構成されているかどうかを確認してください。

+0

これはchromeの特質です。なぜなら '' null ''はうまく動作し、' 'null''はfirefoxで動作するからです。 – Esailija

関連する問題