【发布时间】:2019-06-26 08:04:06
【问题描述】:
后端传递一个字符串,显示如下:
"Hello, <br><br> This notice is to inform you that you are in violation of <font color=red><b>HR POLICY XXXXX</b></font>."
这个页面的重点是让你轻松复制粘贴预先生成的电子邮件,但不需要通过句子喷出一堆 html 标签。
有问题的字符串在 id 为“textBlock”的 a 内。
后端是带有 Oracle DB 的 Java。我可以在某种程度上编辑java,我根本无法触及数据库。我已经使用控制台来处理字符串,并且在完成编辑后以任何方式对其进行编辑似乎可以使其正确显示。 innerText 包括我的摘要中的标签,innerHTML 显示像
.
到目前为止,我已经尝试提供一个 onload 属性,该属性调用一个名为 formatText(); 的函数;这样做: temp var = document.getElementById("textBlock").innerText; document.getElementById("textBlock").innerText = var;
以及上面的函数用innerHTML 代替innerText。我也尝试过使用 document.write();但这会清除页面的其余部分。最后我在字符串前面添加了一些随机字符并尝试使用 replace("!@#","") 函数来替换那些以模仿“编辑我注意到它似乎以任何方式使其正确显示。
java
out.println("<td align=left id=textBlock onload=formatText();> !@#" + strTemp + "</td>" );
预期:
你好,
本通知旨在通知您,您违反了HR POLICY XXXXX。
实际:
Hello, <br><br> This notice is to inform you that you are in violation of <font color=red><b>HR POLICY XXXXX</b></font>.
【问题讨论】:
-
似乎字符串中的 HTML 标签不是真正的 HTML 标签,而是用实体(
&lt;、&gt;)编码,这使得它们看起来像 HTML,但没有被解析为这样.你检查过源字符串吗? -
你试过
document.getElementById("textBlock").innerHTML = The_String_That_You_Get_From_Backend; -
@Pantalaimon 我找了一个拥有数据库访问权限的人来检查数据库,它们被存储为
、 等...而不是编码实体。 -
@Enzy 我试过 var placeholder = document.getElementById("textBlock"); document.getElementById("textBlock").innerHTML = placeholder.innerHTML;这应该会产生相同的结果。我也尝试用 innerText 代替 innerHTML 看看这是否会有所作为。都没有工作:(
-
@CasinoRoyale 在
out.println-ing 数据之前是否对 DB 查询的输出进行了任何处理可能会改变它?或者您在查询中使用了类似HTP.ESCAPE_SC的过程?
标签: javascript java html