【问题标题】:Why does <textarea> display <> instead of &lt;&gt;?为什么 <textarea> 显示 <> 而不是 <>?
【发布时间】:2011-11-21 14:12:52
【问题描述】:

浏览器的文本区域不应该显示原始文本吗?看下面this post的截图,注意&lt;script&gt;标签:

1- 我们可以看到脚本词周围的尖括号:

2- 现在查看页面的来源。我们可以看到尖括号由它们的 HTML 实体表示:

3- 点击编辑帖子,您会看到尖括号在文本区域中可见——而不是它们的 HTML 实体:

4- 查看来自服务器的 XHR 响应(当我们单击编辑时),我们可以看到 HTML 实体,而不是我们在 textarea 中看到的尖括号:

textarea 怎么可能——在编辑帖子时——显示尖括号而不是它们的 HTML 实体? textareas 不应该显示原始文本吗?我在我的网站上试过这个,文本区域显示 HTML 实体,而不是括号,具有相同的源代码。

即使在codepre 标签内,帖子页面也会显示尖括号。它们不应该也作为原始文本输出吗?我也在我的网站上尝试过,页面显示的是 HTML 实体,而不是尖括号。

我在这里缺少什么?

我问是因为在我的网站上实施一项功能时遇到了困难。我想在人们编辑某些东西时向他们展示编码实体,但我想存储原始版本。 SO似乎已经完成了,但我不知道如何。

【问题讨论】:

    标签: html encoding character-encoding html-entities


    【解决方案1】:

    查看Character Data and Markup 并考虑HTML 中的CDATA sections(看看DTD,尽管请注意它不足以完整描述HTML)。

    script(和style)元素具有这样的 CDATA 名称,而 textarea 没有。将数据按原样存储(“未转义”),但确保在 HTML 中的 CDATA 部分之外进行 HTML 编码(甚至在内部,注意防范 &lt;/anything 之类的终止符 - &lt;/ 字符必须分开才能在 HTML 中完全合法)。有关更多详细信息,请参阅CDATA vs PCDATA

    编码愉快。

    【讨论】:

      猜你喜欢
      • 2016-01-18
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      相关资源
      最近更新 更多