javascript - Vad kan exakt orsaka ett "HIERARCHY_REQUEST_ERR: DOM Exception 3"-Fel?


Hur exakt förhåller det sig till jQuery? Jag vet att biblioteket använder inbyggda JavaScript-funktioner internt, men vad är det egentligen som det försöker göra när ett sådant problem uppstår?

Svar #1

Det betyder att du har försökt infoga en DOM-nod på en plats i DOM-trädet där den inte kan gå. Den vanligaste platsen jag ser detta är på Safari som inte tillåter följande:

document.appendChild(document.createElement('div'));

Generellt sett är detta bara ett misstag där detta faktiskt var avsett:

document.body.appendChild(document.createElement('div'));

Andra orsaker som ses i det vilda (sammanfattade från kommentarer):

  • Du försöker lägga till en nod till sig själv
  • Du försöker lägga till null till en nod
  • Du försöker lägga till en nod på en textnod.
  • Din HTML är ogiltig (t.ex. om du inte stänger din målnod)
  • Webbläsaren tror att HTML:en du försöker lägga till är XML (lös genom att lägga till <!doctype html> i din injicerade HTML, eller genom att specificera innehållstypen när du hämtar via XHR)

Svar #2

Om du får detta fel på grund av ett jquery ajax-anrop $.ajax

Då kan du behöva ange vad dataType är som kommer tillbaka från servern. Jag har åtgärdat svaret mycket genom att använda denna enkla egenskap.

$.ajax({
    url: "URL_HERE",
    dataType: "html",
    success: function(response) {
        $('#ELEMENT').html(response);
    }
});

Relaterade artiklar