【问题标题】:Does javascript have an Equivalent to C#s HttpUtility.HtmlEncode? [duplicate]javascript 是否具有等效于 C#s HttpUtility.HtmlEncode 的功能? [复制]
【发布时间】:2012-07-18 16:22:22
【问题描述】:

可能重复:
JavaScript/jQuery HTML Encoding

我将信息作为 Json 传递给客户端,并从我的 javascript 代码生成一些 HTML。我有一个名为 name 的字段,我将其传递到图像的标题中,如下所示:

  html.push("<img  title='" + person.Name + "' src . . . 

问题是如果 person.Name 是“Joe O'Mally”,因为当我将鼠标悬停在图像上时它只显示为“Joe O”(因为名称中的 ')

我不想去掉服务器端的 ',因为还有其他地方我想在页面上显示确切的字符串。

当我悬停图像时,javascript 中是否有等效的 HttpUtility.HtmlEncode 会在图像标题中显示全名?

【问题讨论】:

标签: c# javascript html-encode


【解决方案1】:

不,但你可以很容易地写一个。

function htmlEnc(s) {
  return s.replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/'/g, '&#39;')
    .replace(/"/g, '&#34;');
}

我已经尝试过加快速度的方法(基本上是通过一次“替换”调用来完成操作),但这对于大多数用途来说都足够好,尤其是在现代浏览器中。

【讨论】:

  • 为什么是&amp;#34; 而不是&amp;quot;?就因为少了一个字符?
  • @Lucero 习惯的力量 :-) 你可以使用“"”如果你喜欢的话。
  • 将空格转换为&amp;nbsp; 是非常错误的做法,以及将换行符转换为&lt;br/&gt; (尤其是在HTML5 文档中,其中自闭合标签实际上没有意义)。关键是要防止正在运行的文本被解释为元字符,否则不会改变语义。例如,在以前只有纯空格的地方引入不间断空格会导致文本呈现非常不正确。
  • @Servy,您正在写的是关于将纯文本转换为 HTML。然而,问题在于转义使用非法的字符(或更改被视为 HTML 的文本的含义)。我知道没有库能做得更多,.NET HtmlEncode 和 jQuery 或其他 JS 工具集提供的函数都没有做任何其他事情。是否应该对某些特殊字符(例如&amp;#160;)进行编码以确保跨基于文本的传输的完整性是有争议的,但实际上这也不是 HtmlEncode 方法的责任。
  • 另请注意,顺序很重要。我已经部分完成了,并从上面添加了几个替换方法。我在末尾添加了一个 for &,这是一个坏主意,因为在使用 & 编码之前发生的所有编码都使用 & 所以它们得到 RE 编码,除非你为它解码......把 & 放在编码的开头和解码结束。
【解决方案2】:

Here 是一篇很好的帖子,它解释了 javascript escape() 和 unescape() 函数的使用,这些可能会帮助您解决您正在尝试做的事情。

【讨论】:

  • 不,他们不会。这些函数是关于转义 URL 语法的字符,而不是 HTML 语法。
猜你喜欢
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2012-03-21
  • 2010-12-07
  • 2011-06-13
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多