如何使用 JavaScript 或 JQuery 编码和解码 HTML 实体?
var varTitle = "Chris' corner";
我希望它是:
var varTitle = "Chris' corner";
最佳答案
我建议不要使用被接受为答案的 jQuery 代码。虽然它不会将要解码的字符串插入到页面中,但它确实会导致创建脚本和 HTML 元素等内容。这比我们需要的代码多得多。相反,我建议使用更安全、更优化的函数。
var decodeEntities = (function() {
// this prevents any overhead from creating the object each time
var element = document.createElement('div');
function decodeHTMLEntities (str) {
if(str && typeof str === 'string') {
// strip script/html tags
str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
element.innerHTML = str;
str = element.textContent;
element.textContent = '';
}
return str;
}
return decodeHTMLEntities;
})();
要使用这个函数,只需调用 decodeEntities("&")
它将使用与 jQuery 版本相同的底层技术——但没有 jQuery 的开销,并且在清理 HTML 标签之后输入。见 Mike Samuel's comment关于如何过滤掉 HTML 标签的公认答案。
通过在项目中添加以下行,可以轻松地将这个函数用作 jQuery 插件。
jQuery.decodeEntities = decodeEntities;
关于javascript - HTML 实体解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5796718/