Jak dokładnie odnosi się do jQuery? Wiem, że biblioteka wewnętrznie używa macierzystych funkcji javascript, ale co dokładnie próbuje zrobić, gdy pojawi się taki problem?Co dokładnie może spowodować "HIERARCHY_REQUEST_ERR: DOM Exception 3" -Error?
Odpowiedz
Oznacza to, że próbujesz wstawić węzeł DOM do miejsca w drzewie DOM, w którym nie może on przejść. Najczęstszym miejscem widzę to na Safari, która nie zezwala na następujące:
document.appendChild(document.createElement('div'));
Generalnie, jest to po prostu pomyłka, gdzie to było faktycznie przeznaczone:
document.body.appendChild(document.createElement('div'));
innych przyczyn widoczne w dziki (zestawione z komentarzami):
- próbujesz dołączyć węzeł sobie
- próbujesz dołączyć zerowy do węzła
- Próbujesz dołączyć węzeł do węzła tekstowego.
- Twój HTML jest nieprawidłowy (np braku zamknąć węzeł docelowy)
- Przeglądarka myśli HTML próbujesz dołączyć to XML (fix dodając
<!doctype html>
do zatłoczonego HTML, lub określającą typ zawartości podczas pobierania przez XHR)
można zobaczyć te pytania
Getting HIERARCHY_REQUEST_ERR when using Javascript to recursively generate a nested list
lub
jQuery UI Dialog with ASP.NET button postback
Wniosek jest
podczas próby użycia funkcji append, należy użyć nowej zmiennej, jak w poniższym przykładzie
jQuery(function() {
var dlg = jQuery("#dialog").dialog({
draggable: true,
resizable: true,
show: 'Transfer',
hide: 'Transfer',
width: 320,
autoOpen: false,
minHeight: 10,
minwidth: 10
});
dlg.parent().appendTo(jQuery("form:first"));
});
W powyższym przykładzie, używa var „DLG”, aby uruchomić funkcja appendTo. Następnie błąd „HIERARCHY_REQUEST_ERR” nie wyjdzie ponownie.
natknąłem się ten błąd, gdy za pomocą rozszerzenia Google Chrome Sidewiki. Wyłączenie to problem został rozwiązany za mną.
mam zamiar dodać jeszcze jedną konkretną odpowiedź tutaj, bo to było poszukiwanie 2 godziny na odpowiedź ...
Próbowałam wstrzyknąć tag do dokumentu HTML było tak:.
<map id='imageMap' name='imageMap'>
<area shape='circle' coords='55,28,5' href='#' title='1687.01 - 0 percentile' />
</map>
Jeśli zauważysz, znacznik jest zamknięty w poprzedzającym g przykład (<area/>
). Ta funkcja nie została zaakceptowana w przeglądarkach Chrome. w3schools wydaje się, że powinno być zamknięte, a nie mogłem znaleźć oficjalnej specyfikacji tego tagu, ale z pewnością nie działa w Chrome. Firefox nie zaakceptuje tego z <area/>
lub <area></area>
lub <area>
. Chrome musi mieć <area>
. IE akceptuje wszystko.
W każdym razie ten błąd może być spowodowany nieprawidłowym kodem HTML.
szczególności z jQuery można uruchomić w tej kwestii, jeśli zapomnisz jest kursor w obrębie znacznika html podczas tworzenia elementów:
$("#target").append($("div").text("Test"));
podniesie ten błąd, ponieważ to, co oznaczało było
$("#target").append($("<div>").text("Test"));
dziękuję bardzo za to. – bcolin
Marchew? Lub opiekunów? –
I Mam ten błąd, ponieważ zapomniałem sklonować mój element.
// creates an error
clone = $("#thing");
clone.appendTo("#somediv");
// does not
clone = $("#thing").clone();
clone.appendTo("#somediv");
Ten błąd może wystąpić, gdy próbujesz wstawić węzeł do DOM, który jest nieprawidłowy HTML, który może być coś tak subtelnego jak nieprawidłowego atrybutu, na przykład:
// <input> can have a 'type' attribute
var $input = $('<input/>').attr('type', 'text');
$holder.append($input); // OK
// <div> CANNOT have a 'type' attribute
var $div = $('<div></div>').attr('type', 'text');
$holder.append($div); // Error: HIERARCHY_REQUEST_ERR: DOM Exception 3
Jeżeli jesteś otrzymuję ten błąd z powodu wywołania ajax jquery $ .ajax
Wtedy może trzeba określić co dataType wraca z serwera. Naprawiłem odpowiedź bardzo za pomocą tej prostej właściwości.
baza pojedynczego kodu dla web/phonegap, refaktoryzowana do dynamicznego ładowania szablonu za pomocą odpowiedzi koorchika na http://stackoverflow.com/questions/8366733/external-template-in-underscore. pracował w przeglądarce na komputerze, nie działa w przeglądarce mobilnej ani natywnej aplikacji. to rozwiązanie załatwiło sprawę. –
Tutaj jest ten sam problem, co dziwne tylko w iOS 5. Określanie typu data działa. Dzięki – homerjam
Wiem, że ten wątek jest stary, ale napotkałem inną przyczynę problemu, która może być pomocna dla innych osób. Wystąpił błąd w usłudze Google Analytics próbującej dołączyć się do komentarza HTML. Kod naruszający prawa:
document.documentElement.firstChild.appendChild(ga);
Powodował błąd, ponieważ moim pierwszym elementem był komentarz HTML (a mianowicie kod szablonu Dreamweaver).
<!-- #BeginTemplate "/Templates/default.dwt.php" -->
I zmodyfikowany kod naruszające do czegoś, co prawda nie kuloodporny, ale lepiej:
document.documentElement.firstChild.nodeType===1 ? document.documentElement.firstChild.appendChild(ga) : document.documentElement.lastChild.appendChild(ga);
Innym powodem może wymyślić jest to, że są dołączanie zanim element jest gotowy na przykład
<body>
<script>
document.body.appendChild(foo);
</script>
</body>
</html>
W tym przypadku musisz przenieść skrypt po. Nie do końca pewna, czy to jest koszerne, ale przeniesienie skryptu po ciele nie wydaje się pomóc:/
Zamiast przesuwać skrypt, można również dodawać załączniki w procedurze obsługi zdarzeń.
Jeśli napotkasz ten problem podczas próby dołączenia węzła do innego okna w programie Internet Explorer, spróbuj użyć kodu HTML wewnątrz węzła zamiast samego węzła.
myElement.appendChild(myNode.html());
IE nie obsługuje dołączania węzłów do innego okna.
Czy próbowałeś tego? Nawet w Chrome otrzymuję TypeError: Nie udało się wykonać 'appendChild' na 'Node': parametr 1 nie jest typu 'Node'. (...).To dlatego, że .html() jest typu string, a appendChild oczekuje typu Node. – joedotnot
@Kelly Norton ma rację w swojej odpowiedzi, że The browser thinks the HTML you are attempting to append is XML
i sugeruje specifying the content type when fetching via XHR
.
To prawda, ale czasami używasz bibliotek stron trzecich, których nie zamierzasz modyfikować. W moim przypadku jest to JQuery UI. Następnie należy podać poprawną odpowiedź Content-Type
zamiast przesłonić typ odpowiedzi po stronie JavaScript.Ustaw swoje Content-Type
na text/html
i nic ci nie jest.
W moim przypadku było tak proste, jak zmiana nazwy file.xhtml
na file.html
- serwer aplikacji miał pewne rozszerzenie do mapowania typów MIME po wyjęciu z pudełka. Gdy treść jest dynamiczna, możesz w jakiś sposób ustawić rodzaj odpowiedzi (np. res.setContentType("text/html")
w Servlet API).
Ten błąd przydarzył mi się w IE9, gdy próbowałem dynamicznie dołączyć do urządzenia funkcję, która już istniała w oknie A. Okno A tworzyłoby okienko podrzędne B. W oknie B po pewnym działaniu użytkownika działałaby i działała funkcja element appendChild na elemencie formularza w oknie A z użyciem window.opener.document.getElementById('formElement').appendChild(input);
Spowoduje to błąd. To samo dotyczy tworzenia elementu wejściowego przy użyciu document.createElement('input');
w oknie podrzędnym, przekazując go jako parametr do okna A window.opener
i tam jest dołączany. Tylko wtedy, gdy utworzyłem element wejściowy w tym samym oknie, w którym miałem zamiar je dodać, zakończyłoby się to bezbłędnie.
Stąd mój wniosek (proszę sprawdzić): żaden element nie może być tworzone dynamicznie (przy użyciu document.createElement
) w jednym oknie, a następnie dołączane (używając .appendChild
) do elementu w innym okienku (bez brania może konkretny dodatkowy krok Tęskniłem do upewnij się, że nie jest to uważane za XML lub coś takiego). To nie powiedzie się w IE9 i zgłasza błąd, w FF działa to jednak dobrze.
PS. Nie używam jQuery.
Dzięki twojemu wskaźnikowi zorientowałem się w tym. Zobacz odpowiedź, którą napisałem, jeśli jesteś zainteresowany. –
Tylko w celach informacyjnych.
IE zablokuje dołączanie dowolnego elementu utworzonego w innym kontekście okna z kontekstu okna, do którego element się dodaje.
np
var childWindow = window.open('somepage.html');
//will throw the exception in IE
childWindow.document.body.appendChild(document.createElement('div'));
//will not throw exception in IE
childWindow.document.body.appendChild(childWindow.document.createElement('div'));
I nie zorientowali się, jak utworzyć elementu DOM z jQuery przy użyciu jeszcze inny kontekst okna.
Otrzymuję ten błąd w IE9, jeśli miałem wyłączoną opcję debugowania skryptów (Internet Explorer). Jeśli włączę debugowanie skryptów, nie widzę błędu i strona działa poprawnie. Wydaje się dziwne, co wyjątek DOM ma do czynienia z debugowaniem, czy jest włączone czy wyłączone.
- 1. Co może spowodować wyjątek java.lang.reflect.InvocationTargetException?
- 2. Co może spowodować awarię dynamic_cast?
- 3. co może spowodować zignorowanie pdb.set_trace()?
- 4. Co może spowodować wygenerowanie SIGHUP?
- 5. Uncaught Error: InvalidStateError: DOM Exception 11 with AJAX?
- 6. SECURITY_ERR: DOM Exception 18 on openDatabase
- 7. Błąd niezamierzony: INVALID_STATE_ERR: DOM Exception 11
- 8. Co może spowodować zmianę Oracle ROWID?
- 9. "DOM Exception 18" from canvas
- 10. PhoneGap iOS + DOM Exception 18
- 11. Co może spowodować błąd kompilatora Java podczas analizowania komentarza?
- 12. co dokładnie może powtórzyć polecenie dot?
- 13. Dereferencja może spowodować "java.lang.NullPointerException"
- 14. WebKit Uncaught Błąd: INVALID_STATE_ERR: DOM Exception 11
- 15. Co może spowodować, że clang nie znajdzie nagłówka unordered_map?
- 16. Co może spowodować błąd 2902 podczas instalowania MSI?
- 17. Co może spowodować zakleszczenie pojedynczej blokady zapisu/wielokrotnego odczytu?
- 18. Co może spowodować, że automatyczne uzupełnianie Chrome przestanie działać?
- 19. Co może spowodować wyjątek ArgumentException podczas aktualizowania PictureBox?
- 20. Co może spowodować, że wartość ViewData.ModelState.IsValid stanie się fałszywa
- 21. Co może spowodować "Zasób tymczasowo niedostępny" dla polecenia send send()
- 22. Co może spowodować, że rozmowy ITransaction.CommitAsync potrwają naprawdę długo (24h)?
- 23. Co może spowodować, że Double Buffering zabije moją aplikację?
- 24. Co może spowodować duży problem z wywołaniem HttpWebRequest?
- 25. Jak to może spowodować impas?
- 26. swift 3, PHFetchResult.enumerateObjects error
- 27. Rails 3: Handle ActiveRecord :: RecordNotUnique Exception
- 28. Co może spowodować wyjątek "Nieobsługiwany algorytm klucza certyfikatu" na żądanie internetowym GET
- 29. Błąd: SyntaxError: DOM Exception 12 setRequestHeader @ [kod natywny]
- 30. Security_ERR: DOM Exception 18 openDatabase() przy użyciu Phonegap
Błąd występuje również, gdy próbujesz dołączyć do siebie węzeł. Po prostu wpadłem na ten sam :-) –
Po prostu próbowałem dodać wartość zerową do elementu (i całkowicie niezwiązaną wskazówkę - zawsze upewnij się, że funkcje zwracają to, co napisałeś, aby powrócić: P) –
Widziałem to gdy brakowało jednego z tagów zamykających poza celem. –