2013-10-19 17 views
5

Bitte verschieben Sie dies, wenn ich auf der falschen Seite frage (Javascript-basierte Frage, so bin ich mir ziemlich sicher, dass es am richtigen Ort ist).Wird document.createElement ("") jemals fehlschlagen?

Ich beschäftige mich derzeit mit Fehlerabfangen bei einem Projekt, das demnächst fertig gestellt und für den Kunden eingerichtet werden soll. Ich frage mich, ob die folgende Zeile in Javascript jemals fehlschlagen wird?

var element = document.createElement("someelement") 

dass:

  • someelement ist ein gültiger HTML-Tag (div, a, h1, etc)
  • element eine beliebige Zeichenfolge sein kann, die nicht ein reserviertes Wort ist und beginnen mit einem Buchstaben.
  • Das Gerät läuft auf es ist ein modernes Gerät und RAM ist kein Problem < - EDIT

Wird es nicht immer? Und wenn, was wird es zurückgeben?

HINWEIS: Quellen wären toll, wenn Sie sie haben.

+2

Ich stelle mir vor, es würde fehlschlagen, wenn es den erforderlichen Speicher nicht zuordnen konnte. – Spudley

+0

@Spudley Das ist das einzige, woran ich auch denken könnte. –

Antwort

2

Gemäß the spec wird eine DOMException ausgelöst, wenn tagName ungültige Zeichen enthält (Leerzeichen usw.).

In Firefox schlägt document.creatElement nur fehl, wenn ungültige Zeichen übergeben werden. Null oder undefiniert ist OK.

In Chrome schlägt document.createElement fehl und wirft einen InvalidCharacterError, wenn null oder ungültige Zeichen übergeben werden. Nicht definiert ist OK.

Wie einige Benutzer in den Kommentaren darauf hingewiesen haben, kann es immer aufgrund von Speicherressourcen usw. fehlschlagen, aber Sie können nichts tun, um dies zu verhindern.

Also, wenn someelement is a valid HTML tag (div, a, h1, etc), wird es nie fehlschlagen.

können Sie dieses Snippet verwenden, um ungültige Zeichen zu finden:

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

Die einzige Ausnahme, die ich kenne, ist die folgende (Beachten Sie, dass ich Chrome bin mit):

Error: InvalidCharacterError: DOM Exception 5 

Diese Ausnahme tritt auf, wenn Sie null passieren, ein Objekt oder ein Array als Parameter. Es schlägt auch fehl, wenn Sie eine Zeichenfolge mit ungültigen HTML-Zeichen wie @!#? übergeben.

Wenn Sie undefined übergeben oder den Parameter nicht angeben, wird ein undefiniertes Element erstellt.

<undefined></undefined> 

Wenn Sie sicher sind, dass diese Funktion einen Fehler wirft, sollten Sie wahrscheinlich werden überprüfen, ob die Zeichenfolge, die Sie vorbei sind, ist !== null vor createElement Aufruf, wie wahrscheinlich die Ursache des Problems ist.

Wenn der Fehler weiterhin auftritt, prüfen Sie möglicherweise, ob die Zeichenfolge nur aus den Buchstaben a-z, dem Unterstrich und dem Bindestrich besteht.

+0

Das ist Chrom idiosyncrasy, weil '" null "' nur gut funktioniert und 'null' in Firefox funktioniert. – Esailija

Verwandte Themen