Cách tôi làm thực tế là một lớp lót.
Hàm tạo một đối tượng Range và sau đó tạo một DocumentFragment trong Range với chuỗi là nội dung con.
Sau đó, nó lấy văn bản của phân đoạn, loại bỏ mọi ký tự "vô hình" / không độ rộng và cắt nó khỏi bất kỳ khoảng trắng nào ở đầu / cuối.
Tôi nhận ra câu hỏi này đã cũ, tôi chỉ nghĩ rằng giải pháp của tôi là duy nhất và muốn chia sẻ. :)
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);