我在一个允许用户输入内容的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([?]);
}

其中"[?]"这意味着有些事我不确定.

Additional Details:

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

推荐答案

您可以使用正则表达式将给定Unicode范围内的任何字符替换为其html实体等效项.代码应如下所示:

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

此代码将用它们的html实体等效项替换给定范围(Unicode 00A0-9999,以及与号,大于&;小于)中的所有字符,即&#nnn;,其中nnn是我们从charCodeAt获得的Unicode值.

请在此处查看:http://jsfiddle.net/E3EqX/13/(本例使用jQuery作为示例中使用的元素 Select 器.上面的基本代码本身不使用jQuery)

进行这些转换并不能解决所有问题——确保使用UTF8字符编码,确保数据库将字符串存储在UTF8中.根据系统字体配置和其他您无法控制的问题,您可能会看到still个字符显示不正确的实例.

Documentation

Html相关问答推荐

用完全透明的边框切割出圆圈?

srcset和大小总是下载最大的

有没有可能一个按钮,有焦点,然后再次点击它清除它的焦点,只是使用css?

如何增加行背景的宽度而不影响上面的内容?""' HTML CSS

有没有可能设置div的边框宽度相对于其父宽度和高度?'

CURL邮箱中的图像不能调整其大小

Div内容防止同级大小增加

为什么在移动视图中,这个水平可滚动的表格会在表格的右侧显示额外的空间?

如何使用CSS在NSAttributedString中为HTML文本中的图像制作覆盖图

背景可点击,而不是文本

HX-POST未使用正确的操作(路径)

如何使用*ngFor将模板从父级传递到子级

带标签 css 的 div 内的中心图标

Google Apps 脚本 - RegEx 适用于小文本,但不适用于大文件?

本地和在jsfiddle上页面工作正常,但在GitHub上无法运行.

表格中每 4 行条纹一次

如何删除输入中输入类型数字中的箭头?

为四开本网站主页添加背景图片

html元素可以被css跳过吗?

我怎么能有 :not(.class):nth-of-type(even)?