【问题标题】:Don't decode HTML entities when setting value of <textarea> [duplicate]设置 <textarea> 的值时不要解码 HTML 实体 [重复]
【发布时间】:2016-08-13 00:05:36
【问题描述】:

我有一个将字符串写入&lt;textarea&gt; 的脚本。该字符串可能包含 HTML 实体(如 &amp;amp;)。当字符串写入&lt;textarea&gt; 时,HTML 实体被解码。

var str = 'foo &amp; bar';
form.text.value = str;

会发生什么:

Textarea: foo &amp;amp; bar

我想要什么:

Textarea: foo &amp;amp; bar

我怎样才能做到这一点?

编辑我怎样才能做到这一点在 javascript 中,而不是 PHP?

【问题讨论】:

  • 阅读链接上的答案,上面有 24 个刻度 - 这与 php 无关,但更多的是浏览器呈现 textarea 内容的方式
  • 我不确定我是否理解您在那里所做的事情,因为将这样的标签写入 textarea 应该可以按您的意愿工作 (jsfiddle.net/41wp4jvs)。你确定 form.text 是 textarea 吗?
  • @Ness 无论出于何种原因,它都没有出现在我的浏览器中。虽然你的小提琴显示正确......
  • @JB0x2D1 奇怪。但我真的不认为你在下面发布的解决方案有什么好处。它不会捕获所有情况(您可能会错过其他字符)并且在某些浏览器中它可能会看到双倍。也许在你这样做之前尝试以与我在 jsfiddle 中相同的方式访问 textarea,例如通过 id。看看它是否适合你。
  • 也许吧,但我是在本地机器上加载页面,所以我不担心其他浏览器会如何处理它。也许有人会出现并找出浏览器的这种行为并将其散列到 if firefox then x;如果是铬,那么 y;如果 Internet Explorer 然后 z。我在 Ubuntu 15.10 上使用最新版本的 Chromium。

标签: javascript html


【解决方案1】:
var str = 'foo &amp; bar';
str = str.replace('&', '&amp;');//now str == 'foo &amp;amp; bar'
form.text.value = str;

【讨论】:

    猜你喜欢
    • 2014-01-15
    • 2011-08-13
    • 2012-01-21
    • 2012-05-29
    • 1970-01-01
    • 2011-05-26
    相关资源
    最近更新 更多