Cara saya melakukannya praktis satu baris.
Fungsi membuat objek Range dan kemudian membuat DocumentFragment di Range dengan string sebagai konten anak.
Kemudian ia mengambil teks dari fragmen, menghapus karakter "tak terlihat" / lebar-nol, dan memotongnya dari spasi kosong di depan / di belakang.
Saya menyadari pertanyaan ini sudah lama, saya hanya mengira solusi saya unik dan ingin dibagikan. :)
function getTextFromString(htmlString) {
return document
.createRange()
// Creates a fragment and turns the supplied string into HTML nodes
.createContextualFragment(htmlString)
// Gets the text from the fragment
.textContent
// Removes the Zero-Width Space, Zero-Width Joiner, Zero-Width No-Break Space, Left-To-Right Mark, and Right-To-Left Mark characters
.replace(/[\u200B-\u200D\uFEFF\u200E\u200F]/g, '')
// Trims off any extra space on either end of the string
.trim();
}
var cleanString = getTextFromString('<p>Hello world! I <em>love</em> <strong>JavaScript</strong>!!!</p>');
alert(cleanString);