2013-10-19 37 views
5

Proszę przenieść to, jeśli pytam na niewłaściwą stronę (pytanie oparte na JavaScript, więc jestem prawie pewien, że jest we właściwym miejscu).Czy document.createElement ("") nigdy się nie powiedzie?

Obecnie zajmuję się uchwyceniem błędu w projekcie, który wkrótce zostanie ukończony i skonfigurowany dla klienta. Zastanawiam się, czy poniższy wiersz w JavaScript kiedykolwiek zawiedzie?

var element = document.createElement("someelement") 

warunkiem, że:

  • someelement jest prawidłowy tag HTML (div, a, h1, etc)
  • element może być dowolny ciąg znaków, który nie jest zarezerwowanym słowem i zaczyna się literą.
  • Urządzenie to działa na to nowoczesne urządzenie i RAM nie jest problemem < - EDIT

Czy kiedykolwiek uda? A jeśli tak, to co powróci?

UWAGA: Źródła będą świetne, jeśli je masz.

+2

Wyobrażam sobie, że zawiedzie, jeśli nie może przydzielić wymaganej pamięci. – Spudley

+0

@Spudley To jedyne, co mogłem wymyślić. –

Odpowiedz

2

Zgodnie z the spec, wyjątek DOMException powstaje, jeśli tagName zawiera nieprawidłowe znaki (białe znaki itp.).

W przeglądarce Firefox, document.creatElement zakończy się niepowodzeniem po przekazaniu nieprawidłowych znaków. Null lub undefined jest OK.

W Chrome dokument.createElement zakończy się niepowodzeniem i wygeneruje błąd InvalidCharacterError podczas przekazywania wartości null lub nieprawidłowych znaków. Nieokreślone jest OK.

Niektórzy użytkownicy wskazani w komentarzach mogą zawsze zawieść z powodu zasobów pamięci itp., Ale nie można nic zrobić, aby temu zapobiec.

Tak więc, jeśli someelement is a valid HTML tag (div, a, h1, etc), nigdy się nie zawiedzie.

Można użyć tego fragmentu znaleźć nieprawidłowe znaki:

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

Jedyny wyjątek jestem świadomy jest następujący (Zauważ, że używam Chrome):

Error: InvalidCharacterError: DOM Exception 5 

Wyjątek ten pojawia się, gdy przechodzą null An obiekt lub tablica jako parametr. Ten błąd również kończy się niepowodzeniem, gdy przekazujesz ciąg znaków z nieprawidłowymi znakami HTML, na przykład @!#?.

Jeśli przekażesz niezdefiniowane lub nie określisz parametru, utworzy on niezdefiniowany element.

<undefined></undefined> 

Jeżeli jesteś pewien, że ta funkcja jest rzucanie błąd, należy prawdopodobnie sprawdzenia, czy ciąg jesteś przejazdem jest !== null przed wywołaniem createElement, jako że jest prawdopodobne, że źródłem problemu.

Jeśli błąd nadal występuje, być może sprawdź, czy ciąg składa się tylko z liter a-z, podkreślenia i myślnika.

+0

To jest chromowana idiosynkrazja, ponieważ '" null "' działa dobrze i 'null' działa w firefoxie. – Esailija

Powiązane problemy