Bagaimana tepatnya hubungannya dengan jQuery? Saya tahu pustaka menggunakan fungsi javascript asli secara internal, tetapi apa sebenarnya yang coba dilakukan setiap kali masalah seperti itu muncul?
javascript
jquery
domexception
Julian Weimer
sumber
sumber
response.xml
tersedia. Misalnya,$(e).append(response.xml || $(response));
Jika Anda mendapatkan kesalahan ini karena panggilan ajax jquery $ .ajax
Maka Anda mungkin perlu menentukan apa yang dataType datang kembali dari server. Saya sudah banyak memperbaiki respons menggunakan properti sederhana ini.
sumber
Khususnya dengan jQuery, Anda dapat mengalami masalah ini jika lupa tanda sisipan di sekitar tag html saat membuat elemen:
Akan meningkatkan kesalahan ini karena apa yang Anda maksudkan adalah
sumber
Kesalahan ini dapat terjadi ketika Anda mencoba menyisipkan simpul ke DOM yang HTML tidak valid, yang dapat menjadi sesuatu yang halus seperti atribut yang salah, misalnya:
sumber
@Kelly Norton benar dalam jawabannya
The browser thinks the HTML you are attempting to append is XML
dan menyarankanspecifying the content type when fetching via XHR
.Memang benar namun Anda kadang-kadang menggunakan perpustakaan pihak ketiga yang tidak akan Anda modifikasi. Ini JQuery UI dalam kasus saya. Maka Anda harus memberikan hak
Content-Type
dalam respons alih-alih mengganti jenis respons di sisi JavaScript. TetapkanContent-Type
untuktext/html
dan Anda baik-baik saja.Dalam kasus saya, itu semudah mengubah nama
file.xhtml
kefile.html
- aplikasi server memiliki beberapa ekstensi untuk MIME jenis pemetaan keluar dari kotak. Saat konten dinamis, Anda dapat mengatur jenis respons konten, entah bagaimana (misalnyares.setContentType("text/html")
di Servlet API).sumber
Anda dapat melihat pertanyaan-pertanyaan ini
Memperoleh HIERARCHY_REQUEST_ERR saat menggunakan Javascript untuk menghasilkan daftar bersarang secara rekursif
atau
Dialog UI jQuery dengan postback tombol ASP.NET
Kesimpulannya adalah
ketika Anda mencoba menggunakan fungsi append, Anda harus menggunakan variabel baru, seperti contoh ini
Pada contoh di atas, gunakan var "dlg" untuk menjalankan fungsi appendTo. Kemudian kesalahan "HIERARCHY_REQUEST_ERR" tidak akan keluar lagi.
sumber
Saya mengalami kesalahan ini saat menggunakan ekstensi Google Chrome Sidewiki. Menonaktifkan itu memecahkan masalah bagi saya.
sumber
Saya akan menambahkan satu lagi jawaban spesifik di sini karena itu adalah pencarian 2 jam untuk jawabannya ...
Saya mencoba menyuntikkan tag ke dokumen. Html seperti ini:
Jika Anda perhatikan, tag ditutup pada contoh sebelumnya (
<area/>
). Ini tidak diterima di browser Chrome. w3schools tampaknya berpikir itu harus ditutup, dan saya tidak dapat menemukan spek resmi pada tag ini, tetapi jelas tidak bekerja di Chrome. Firefox tidak akan menerimanya dengan<area/>
atau<area></area>
atau<area>
. Chrome harus punya<area>
. IE menerima apapun.Lagi pula, kesalahan ini bisa jadi karena HTML Anda tidak benar.
sumber
Saya tahu utas ini sudah lama, tetapi saya telah menemukan penyebab lain masalah yang mungkin bermanfaat bagi orang lain. Saya mendapatkan kesalahan dengan Google Analytics yang mencoba menambahkan komentar HTML. Kode yang menyinggung:
Ini menyebabkan kesalahan karena elemen pertama saya adalah komentar HTML (yaitu kode template Dreamweaver).
Saya memodifikasi kode yang menyinggung menjadi sesuatu yang memang tidak tahan peluru, tetapi lebih baik:
sumber
Jika Anda mengalami masalah ini saat mencoba menambahkan node ke jendela lain di Internet Explorer, coba gunakan HTML di dalam node alih-alih node itu sendiri.
IE tidak mendukung menambahkan node ke jendela lain.
sumber
GALAT ini terjadi pada saya di IE9 ketika saya mencoba untuk menambahkan anak secara dinamis ke yang sudah ada di jendela A. Jendela A akan membuat jendela anak B. Di jendela B setelah beberapa tindakan pengguna, suatu fungsi akan berjalan dan melakukan lampiran pada elemen bentuk di jendela A menggunakan
window.opener.document.getElementById('formElement').appendChild(input);
Ini akan menimbulkan kesalahan. Sama dengan membuat elemen input menggunakan
document.createElement('input');
di jendela anak, meneruskannya sebagai parameter kewindow.opener
jendela A, dan ada menambahkan. Hanya jika saya membuat elemen input di jendela yang sama di mana saya akan menambahkannya, itu akan berhasil tanpa kesalahan.Jadi kesimpulan saya (harap verifikasi): tidak ada elemen yang dapat dibuat secara dinamis (menggunakan
document.createElement
) di satu jendela, dan kemudian ditambahkan (menggunakan.appendChild
) ke elemen di jendela lain (tanpa mengambil langkah ekstra tertentu yang mungkin saya lewatkan untuk memastikan itu tidak dianggap XML) atau sesuatu). Ini gagal di IE9 dan melempar kesalahan, dalam FF ini berfungsi dengan baik.PS. Saya tidak menggunakan jQuery.
sumber
Alasan lain ini dapat muncul adalah bahwa Anda menambahkan sebelum elemen siap misalnya
Dalam hal ini, Anda harus memindahkan skrip setelah. Tidak sepenuhnya yakin apakah itu halal, tetapi memindahkan skrip setelah tubuh sepertinya tidak membantu: /
Alih-alih memindahkan skrip, Anda juga dapat melakukan penambahan dalam pengendali acara.
sumber
Saya mendapat kesalahan itu karena saya lupa mengkloning elemen saya.
sumber
Hanya untuk referensi.
IE akan memblokir menambahkan elemen apa pun yang dibuat dalam konteks jendela yang berbeda dari konteks jendela tempat elemen tersebut ditambahkan.
misalnya
Saya belum menemukan cara membuat elemen dom dengan jQuery menggunakan konteks jendela yang berbeda.
sumber
Saya mendapatkan kesalahan ini di IE9 jika saya telah menonaktifkan opsi debugging skrip (Internet Explorer). Jika saya mengaktifkan debugging skrip saya tidak melihat kesalahan dan halaman berfungsi dengan baik. Tampaknya aneh apa yang harus dilakukan pengecualian DOM dengan debugging diaktifkan atau dinonaktifkan.
sumber