簡體   English   中英

使用 Javascript 格式化 HTML 字符串以正確顯示

[英]Using Javascript to format an HTML string to display properly

后端傳遞一個字符串,顯示如下:

"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 顯示像 <br> 這樣的標簽。

到目前為止,我已經嘗試給 onload 屬性調用一個名為 formatText(); 的函數; 這樣做: temp var = document.getElementById("textBlock").innerText; document.getElementById("textBlock").innerText = var;

以及上面使用innerHTML而不是innerText的函數。 我也試過使用 document.write(); 但這會清除頁面的其余部分。最后,我在字符串前面添加了一些隨機字符,並嘗試使用 replace("!@#","") 函數來替換這些字符以模仿“編輯它以任何方式似乎都能正常顯示”,我注意到。

爪哇

out.println("<td align=left id=textBlock onload=formatText();> !@#" + strTemp + "</td>" );

預期的:

你好,

本通知旨在通知您,您違反了HR 政策 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 標簽功能。 您可以使用正則表達式

 var str = "Hello, <br><br> This notice is to inform you that you are in violation of <font color=red><b>HR POLICY XXXXX</b></font>." console.log(str) var str2 = str.replace(/<[^>]*>?/gm, '') console.log(str2)

如果你想讓 html 元素呈現你的 html,你需要使用 DOM 屬性innerHtml

 var str = "Hello, <br><br> This notice is to inform you that you are in violation of <font color=red><b>HR POLICY XXXXX</b></font>." document.getElementById('myDiv').innerHTML = str
 <div id="myDiv">Hi</div>

(在評論中解決,為完整性添加了答案)

當 HTML 標簽在瀏覽器中可見時,它通常用 html-entities 編碼,以防止它被解析為 HTML。 在這種情況下,后處理腳本將<>字符替換為其實體對應物&lt; &gt; .

禁用這些替換解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM