javascript - HTML 实体解码

标签 javascript jquery html

如何使用 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;
})();

http://jsfiddle.net/LYteC/4/

要使用这个函数,只需调用 decodeEntities("&") 它将使用与 jQuery 版本相同的底层技术——但没有 jQuery 的开销,并且在清理 HTML 标签之后输入。见 Mike Samuel's comment关于如何过滤掉 HTML 标签的公认答案。

通过在项目中添加以下行,可以轻松地将这个函数用作 jQuery 插件。

jQuery.decodeEntities = decodeEntities;

关于javascript - HTML 实体解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5796718/

相关文章:

jquery - slideToggle() 无法正常工作

javascript - 表单输入的字符计数器 - 不计数

html - 创建 4 个覆盖整个页面的响应框

javascript - 如何制作本地离线数据库

javascript - 日期对象可以用于在 IE 10 中对数组进行排序吗

javascript - 在 JSXGraph 中使滑翔机元素可拖动

jQuery - 如果 hasClass 但对于多个元素

php - 使用 include 时,php 将 ""添加到 html

javascript - 在data nuxt js中生成一个字符串值的随机单词

javascript - 标签 URL 重写/DOM 操作导致 JS 失败