从servlet向js应用程序发送HTML会破坏Firefox中的数据

Sending HTML from servlet to js application corrupts data in Firefox

本文关键字:Firefox 数据 HTML servlet js 应用程序      更新时间:2023-09-26

我正在使用javaservlet和js端的iframe将一些HTML代码发送回iframe。实际上,我只是通过使用jQuery将HTML代码中的一些json封装在一个<div>中来解析它,但返回的字符串有时会添加文本。

如果添加的文本中有一个带括号的单词,Firefox会自动为我关闭括号,这是我不想要的。

例如,如果我发送这个:

<div>{"location":[],"columns":["<case expression>","headers"]}</div>

Firefox(到目前为止只有Firefox,而不是IE或chrome)将以如下方式接收:

<div>{"location":[],"columns":["<case expression>","headers"]}</case></div>

这搞砸了我的解析。我发送的文本带有text/htmlContent-Type,我认为这可能是问题的原因。我尝试过application/json中的Content-Type,但它不会向iframe写入html,除非我使用text/html

有人能帮我解决问题吗?如果数据不太广泛,我愿意尝试另一种发送数据的方法。

为了防止浏览器将HTML元字符解释为HTML元字符,以便您的"<"answers">"字符最终成为文本的一部分,您可以将它们作为HTML实体"转义"。"<"字符为&lt;,">"为&gt;。人们通常也会引用与号("&")作为&amp;,但我认为浏览器通常对此更聪明一点。

由OP编辑代码解决方案:

我用的是StringEscapeUtils.escapeHTML(),效果很好。谢谢