在设置<textarea>的值时不要解码HTML实体

3
我有一个脚本,可以将字符串写入到<textarea>中。该字符串可能包含HTML实体(如&amp;)。当该字符串被写入到<textarea>时,HTML实体会被解码。
var str = 'foo &amp; bar';
form.text.value = str;

发生了什么:

文本区域:foo & bar

我想要的是:

文本区域:foo &amp; bar

如何实现这个?

编辑 如何在JavaScript中实现这个,而不是PHP?


1
请在链接上阅读获得24个赞的答案 - 这与php无关,而更多地涉及浏览器呈现textarea内容的方式。 - StudioTime
我不确定我理解你在做什么,因为像那样将标签写入文本区域应该按照你的意愿工作(https://jsfiddle.net/41wp4jvs/)。你确定form.text是一个文本区域吗? - Ronen Ness
@Ness,不知道为什么,在我的浏览器中无法显示。尽管你的fiddle可以正确显示... - JB0x2D1
@JB0x2D1 奇怪。但我真的不认为你下面发布的解决方案是好的。它不能捕捉到所有情况(可能会错过其他字符),在某些浏览器中可能会看到两倍。也许在执行此操作之前,尝试通过id以与jsfiddle相同的方式访问textarea。看看它是否适用于您。 - Ronen Ness
也许吧,但我是在本地加载页面,所以不担心其他浏览器可能会如何处理它。也许有人会来解决哪些浏览器会以这种方式行事,并将其转换为如果火狐则x;如果Chrome则y;如果Internet Explorer则z。我正在Ubuntu 15.10上使用最新版本的Chromium。 - JB0x2D1
1个回答

0
var str = 'foo &amp; bar';
str = str.replace('&', '&amp;');//now str == 'foo &amp;amp; bar'
form.text.value = str;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接