在 JavaScript 中对 HTML 实体进行编码

2024-05-28

我正在使用允许用户输入内容的 CMS。问题是当他们添加符号时®,它可能无法在所有浏览器中正常显示。我想设置一个必须搜索的符号列表,然后转换为相应的 html 实体。例如

® => ®
&=>&
© =>©
™ =>™

转换后,需要将其包装在<sup>标签,结果是:

® => <sup>&reg;</sup>

因为特定的字体大小和填充样式是必要的:

sup { font-size: 0.6em; padding-top: 0.2em; }

JavaScript 会是这样的吗?

var regs = document.querySelectorAll('®');
  for ( var i = 0, l = imgs.length; i < l; ++i ) {
  var [?] = regs[i];
  var [?] = document.createElement('sup');
  img.parentNode.insertBefore([?]);
  div.appendChild([?]);
}

其中“[?]”表示有一些事情我不确定。

额外细节:

  • 我想用纯 JavaScript 来做到这一点,而不是 需要像 jQuery 这样的库,谢谢。
  • 后端是Ruby
  • 使用使用 Ruby on Rails 构建的 RefineryCMS

您可以使用正则表达式将给定 unicode 范围内的任何字符替换为其等效的 html 实体。代码看起来像这样:

var encodedStr = rawStr.replace(/[\u00A0-\u9999<>\&]/g, function(i) {
   return '&#'+i.charCodeAt(0)+';';
});

或者在 ES6 中(相同的实现,但是一行):

const encodedStr = rawStr.replace(/[\u00A0-\u9999<>\&]/g, i => '&#'+i.charCodeAt(0)+';')

此代码将用其 html 实体等效项替换给定范围内的所有字符(unicode 00A0 - 9999,以及&符号,大于和小于),这很简单&#nnn; where nnn是我们得到的unicode值charCodeAt.

在这里查看它的实际效果:http://jsfiddle.net/E3EqX/13/ http://jsfiddle.net/E3EqX/13/(本示例使用 jQuery 作为示例中使用的元素选择器。上面的基本代码本身不使用 jQuery)

进行这些转换并不能解决所有问题 - 确保您使用的是 UTF8 字符编码,确保您的数据库以 UTF8 存储字符串。你still可能会出现字符显示不正确的情况,具体取决于系统字体配置和您无法控制的其他问题。

文档

  • String.charCodeAt - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt
  • HTML 字符实体 -http://www.chucke.com/entities.html http://www.chucke.com/entities.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中对 HTML 实体进行编码 的相关文章

  • JavaScript 作为 HTML 属性是不好的做法吗?

    例子 https stackoverflow com a 372 89566 710887 https stackoverflow com a 37289566 710887 我看到这种情况越来越频繁地发生 我总是被教导要将 javascr
  • Select2 的行为与未为 Select2 定义的 Uncaught 查询函数非常不同

    我按以下方式加载 select2 的值 声明类型 var AdjustmentType Backbone Model extend url Hexgen getContextPath referencedata adjustmenttype
  • 在模式中重新加载内容(twitter bootstrap)

    我正在使用 twitter bootstrap 的模式弹出窗口 div class modal hide fade in div class modal header a class close a h3 Header h3 div div
  • React Native 上无法识别的字体系列

    我在使用 React Native 时遇到了一个特殊的错误 在我的里面button js我在做 import Icon from react native vector icons MaterialIcons const icon Icon
  • javascript 检查 json 中是否为 null

    我使用以下 JavaScript 它写得很好 直到得到没有值的结果 在控制台日志中它显示了这一点 未捕获的类型错误 无法读取 null 的属性 文本 但我下面的脚本似乎不起作用 var checkCaption photo caption
  • 动态创建特定数量的输入表单元素

    我读过很多关于动态添加字段集的博客和帖子 但它们都给出了非常复杂的答案 我所要求的并没有那么复杂 我的 HTML 代码
  • HTML 使用 Javascript 比较 2 个日期

    我正在尝试使用 Javascript 比较 2 个日期 如果 myDateL 位于 mydateR 之后 则单击该按钮时会显示一个消息框 我的代码有什么问题吗 我知道我见过类似的线程 但我无法理解 我希望有人能帮助我解决这个问题
  • 解析:删除用户及其相关记录

    我有带有实体的解析表 用户 默认类别 Commets 带有指向 User 实体的指针的类 我需要从实体 User 中删除用户及其所有评论 位于 Comments 实体中 现在我有 JS Cloud 代码 Parse Cloud define
  • 将元素粘贴到滚动上固定元素的底部?

    基本上 我想要实现的目标是让辅助导航在滚动时与主导航的底部相遇后立即粘在主导航的底部 我仍在学习 jQuery 并且我已经开始抓狂了 编辑 意识到我没有解释到目前为止我已经到了哪里 该类被添加到元素中 但是它没有固定在主标题下方 而是从视口
  • 如何禁用图像上的高亮显示

    I m trying to disable highlight on an image when I drag my mouse over an image it is highlighted Take a look 多谢 Use 用户选择
  • 在 1 级深度上翻转键值对

    我有对象 const pairs A D 1 2 3 B D 3 2 1 C D 4 3 2 1 B 0 1 2 3 我怎样才能让它翻转 const fliped D A 1 2 3 B 3 2 1 C 4 3 2 1 B C 0 1 2
  • 如何在 JavaScript 中访问 Chrome 拼写检查建议

    如何检测 JavaScript 文本区域内的拼写错误 有与此相关的事件吗 如何访问 Chrome 针对拼写错误单词的拼写检查建议 如何访问 Chrome 针对拼写错误单词的拼写检查建议 尽我所知 你不能 https stackoverflo
  • 邪恶的 Firefox 错误——“底层对象不支持参数或操作”

    我想弄清楚这里发生了什么事 我已经研究了几个小时了 似乎无法理解为什么会发生这种情况 我正在进行一些 AJAX 调用 但仅在 Mac OS X 上的 Firefox 版本 21 中不断收到此错误 这是错误 Exception A param
  • 禁用 WebSocket 证书验证

    我需要禁用 WebSocket 的证书验证 因为我使用的是自签名证书 我在这个问题中发现Websocket SSL 连接 https stackoverflow com questions 30902547 websocket ssl co
  • 用javascript去掉未使用的小数

    我有一个货币输入 只需要返回有效数字 输入始终有两位小数 因此 4 00 gt 4 4 10 gt 4 1 4 01 gt 4 01 这是我目前正在做的事情 chop off unnecessary decimals if val char
  • MomentJS:如何将 MM/DD/YYYY 中的日期解析为 DD/MM/YYYY

    如何在澳大利亚和美国时间格式中使用 moment js 例如 07 08 2017 对于两种时间格式都有好处 但是 30 08 2017 对于 moment js 无效 但我可以有这样的 dateTime 您可以在这里检查 http jsf
  • 删除 IE 10 兼容性视图中的蓝色边框

    如何删除或不显示每个带有图像的锚点中的边框链接 顺便说一下 浏览器设置是兼容模式 其他问题的答案不足以解决我的问题 我猜是因为它只适用于较低版本的 IE EDIT 我目前正在客户需要的地方创建自定义共享按钮 div a href img h
  • 使用javascript在没有提交按钮的情况下将输入值显示到另一个页面

    我正在尝试将输入值的结果显示到另一个页面 但这个输入没有提交按钮 因此 我正在使用keyup来存储输入数据 我有2页 index1 php and index2 php 索引1 php
  • 使重复的scrollBy像jQuery的动画scrollTop一样平滑

    如何使重复的scrollBy调用更平滑 就像使用jQuery的animatescrollTop制作动画一样 目前它是跳跃的 页面在不同的滚动位置之间跳转 我怎样才能让它更顺畅 这是滚动代码 window scrollBy 0 10 scro
  • Javascript“悬停时”循环

    任何人都可以帮助我解决这个问题 我有一个按钮 当悬停时会触发一个操作 但我希望只要按钮悬停就重复它 我很感激任何解决方案 无论是在 jquery 还是纯 javascript 中 这是我的代码此时的样子 在 jquery 中 var scr

随机推荐

  • C++:如何构建没有 void 指针的事件/消息系统?

    我希望在我的 C 项目中拥有一个动态消息传递系统 其中有一个固定的现有事件列表 事件可以在运行时的任何地方触发 并且您可以在其中订阅某些事件的回调函数 应该有一个选项可以在这些事件中传递参数 例如 一个事件可能不需要任何参数 EVENT E
  • Angular 中的单元测试点击事件

    我正在尝试将单元测试添加到我的 Angular 2 应用程序中 在我的一个组件中 有一个带有 click 处理程序 当用户单击按钮时 将调用在中定义的函数 ts类文件 该函数在 console log 窗口中打印一条消息 表明该按钮已被按下
  • 在所有延迟的作业之前挂钩

    是否可以在所有delayed job任务之前运行一个方法 基本上 我们试图确保每台运行delayed job的服务器都有我们代码的最新实例 因此我们希望运行一个方法来在每个作业运行之前检查这一点 我们已经有了 check 方法并在其他地方使
  • 如何每隔一行读取 CSV 文件

    如何从 CSV 文件中每 2 行获取数据 例如 如果我有一个看起来像这样的文件 0 1 0 23 34 1 45 45 2 78 16 3 110 78 4 48 14 5 76 23 6 55 33 7 12 13 8 18 76 如何迭
  • 我可以向 DOM 对象添加任意属性吗?

    我可以向 JavaScript DOM 对象添加任意属性 例如
  • React - 能够通过 props 控制 SVG 的填充颜色

    我有一个 SVG 这里称为 example svg 它作为组件被调用和创建 如下所示 import ReactComponent as Example from example svg import styles from index mo
  • Blazor / SVG 实时更新

    我正处于使用 Blazor 开发实时 Web 应用程序的早期阶段 目的是在网页上显示与某些设备的状态有关的实时状态更新 它是机器的 HMI 可以将其视为具有实时数据更新的仪表板 机器的图形模型将使用 SVG 完成并托管在应用程序中 我正在尝
  • Ruby On Rails 与 Windows Vista - 最佳设置? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您认为 Win Vista 环境中 RoR 的最佳设置是什么 我尝试过 radrails eclipse 插件 它对我来说似乎太庞大了 我也开始
  • Roslyn 将内容嵌入到程序集中

    是否可以嵌入content使用 roslyn 进入程序集 嵌入资源效果很好 但不知道如何添加内容 我添加这样的资源 foreach string file in Directory GetFiles inputPath Where item
  • 只有一组多次捕获

    String 50 60 70 50 1 7 9 51 5 9 10 Want 9 51 Tried G K d Result 1 7 9 51 看来您正在使用 PCRE 正则表达式来获取可以在内部数学运算符前面添加的数字 没有内在的 Us
  • 如何通过 Viber 和 google Hangout 分享可绘制图像?

    当我通过 Whatsapp 分享图像时 我的代码工作正常 但对于 Viber 和 google Hangout 我收到 找不到照片 错误 这是我的代码 int ImageResourse imageAdapter mThumbIds pos
  • setuptools 并将选项传递给依赖项

    我正在尝试为 pypi 打包一个模块 并且我将 Mercurial 作为依赖项之一 目标计算机可能有也可能没有构建工具 因此我想使用 pure 选项安装 Mercurial 但我找不到指示 setup py 以指定方式安装依赖项的方法 除了
  • 预增量没有按我的预期工作

    我正在尝试通过在线解决一些问题来学习动态规划 我遇到的一个问题需要处理以下输入 4 10 3 4 4 5 6 7 5 7 第一个指向项目数量 第二个指向总容量 其余四个 成对 现在应该指向价值和容量 我遇到的问题是解析它的代码 includ
  • 如何在 Fluent NHibernate ClassMap 类中指定表名?

    我是 NHibernate 的新手 正在尝试使用 Fluent 进行映射 我的实体类名称与它必须映射到的数据库表名称不同 我正在使用派生的映射类ClassMap lt gt 但我无法指定表名 属性TableName from ClassMa
  • jQuery 验证在 IE7 + IE8 中不起作用

    我正在尝试使用jQuery 验证 http bassistance de jquery plugins jquery plugin validation 我网站上的表单上的插件 该表单适用于 FF Chrome Opera 和 Safari
  • 使用 JavaScript 获取图像的一部分

    是否可以显示图像的任何部分img通过 JavaScript 标记 带有像素 我将准备一个大图像 例如 32x320 像素 并定义起始位置 X Y 例如 0 32 和宽度 高度 例如 32 32 并且希望脚本显示第二个 32x32 像素 部分
  • 如何编辑范围? // Google Classroom 控制 Google Apps 脚本中学生访问的权限范围

    我是一名高中老师 正在针对 Google Classroom 编写 Google Apps 脚本 我想创建一个类似于学生成绩视图的电子表格 我的学生可以使用他们的凭据进行访问 我已经成功编写了代码 这样我就可以通过在代码中显式放置学生的 I
  • java中的语音识别

    我想在我的项目中使用语音识别 我找到了这段代码 但是当我运行它时 我收到一个错误 run java lang NullPointerException at newpackage HelloWorld main HelloWorld jav
  • GSON 预期为 BEGIN_ARRAY,但在第 1 行错误为 STRING

    我正在尝试使用 Retrofit 和 GSON 解析从 API 返回的字符串数组 响应通常如下所示 案例 1 Scan finished scan information embedded in this object https www
  • 在 JavaScript 中对 HTML 实体进行编码

    我正在使用允许用户输入内容的 CMS 问题是当他们添加符号时 它可能无法在所有浏览器中正常显示 我想设置一个必须搜索的符号列表 然后转换为相应的 html 实体 例如 gt reg gt amp gt copy gt trade 转换后 需