Kemungkinannya adalah Anda tidak membutuhkan fungsi seperti itu. Karena kode Anda sudah ada di browser *, Anda dapat mengakses DOM secara langsung alih-alih menghasilkan dan menyandikan HTML yang harus diterjemahkan kembali oleh peramban agar dapat digunakan.
Gunakan innerText
properti untuk menyisipkan teks biasa ke DOM dengan aman dan jauh lebih cepat daripada menggunakan fungsi melarikan diri apa pun yang disajikan. Bahkan lebih cepat daripada menetapkan string preencoded statis innerHTML
.
Gunakan classList
untuk mengedit kelas, dataset
untuk mengatur data-
atribut dan setAttribute
untuk orang lain.
Semua ini akan menangani pelarian untuk Anda. Lebih tepatnya, tidak ada pelolosan yang diperlukan dan tidak ada pengkodean yang dilakukan di bawah **, karena Anda bekerja di sekitar HTML, representasi tekstual dari DOM.
// use existing element
var author = 'John "Superman" Doe <john@example.com>';
var el = document.getElementById('first');
el.dataset.author = author;
el.textContent = 'Author: '+author;
// or create a new element
var a = document.createElement('a');
a.classList.add('important');
a.href = '/search?q=term+"exact"&n=50';
a.textContent = 'Search for "exact" term';
document.body.appendChild(a);
// actual HTML code
console.log(el.outerHTML);
console.log(a.outerHTML);
.important { color: red; }
<div id="first"></div>
* Jawaban ini tidak ditujukan untuk pengguna JavaScript sisi-server (Node.js, dll. )
** Kecuali Anda secara eksplisit mengubahnya menjadi HTML aktual setelahnya. Misalnya dengan mengakses innerHTML
- inilah yang terjadi ketika Anda menjalankan yang $('<div/>').text(value).html();
disarankan dalam jawaban lain. Jadi, jika tujuan akhir Anda adalah memasukkan beberapa data ke dalam dokumen, dengan melakukannya dengan cara ini Anda akan melakukan pekerjaan dua kali. Anda juga dapat melihat bahwa dalam HTML yang dihasilkan tidak semuanya dikodekan, hanya minimum yang diperlukan agar valid. Ini dilakukan tergantung konteks, itu sebabnya metode jQuery ini tidak menyandikan tanda kutip dan karenanya tidak boleh digunakan sebagai escaper tujuan umum. Pelarian kutipan diperlukan ketika Anda membuat HTML sebagai string dengan data yang tidak tepercaya atau berisi kutipan di tempat nilai atribut. Jika Anda menggunakan DOM API, Anda tidak perlu repot melarikan diri sama sekali.