如何在 JavaScript 中轉義 HTML 特殊字元?


HTML 包含特殊字元,例如 ‘<,’ ‘>,’ ‘/,’ 以及更多諸如單引號和雙引號之類的字元。這些特殊字元用於 HTML 標籤,例如 ‘<’ 用於開啟 HTML 標籤。‘/’‘>’ 用於關閉 HTML 標籤。本教程將教你如何在 JavaScript 中轉義 HTML 特殊字元

現在,問題是如果我們想在 HTML 內容中使用這些字元怎麼辦?如果我們在 HTML 內容中正常使用特殊字元,它會將其視為開啟或關閉 HTML 標籤,併產生未知錯誤。

例如,我們需要將以下字串渲染到瀏覽器中。

<b> tutorialsPoint </b>

如果我們直接在 HTML 中新增上述字串,它會將 <b> 視為粗體標籤,但我們希望將其用作字串。

為了克服上述問題,我們必須對所有特殊字元使用 Unicode。在這裡,我們將用 Unicode 替換所有特殊字元以轉義 HTML 特殊字元,並在 HTML 字串中使用它們。

下面給出解決上述問題的不同方法。

  • 使用 createTextNode() 方法
  • 使用 textContent 屬性
  • 使用 replace() 方法

使用 createTextNode() 方法

在這種方法中,我們將使用 HTML DOM 中的 createTextNode() 方法。我們只需要將字串作為引數傳遞給該方法,它會返回編碼後的字串。

語法

Var converted_string = document.createTextNode(string);

引數

  • 字串 − 我們可以將任何 HTML 字串作為引數傳遞以轉義特殊字元並對其進行編碼。

示例 1

以下示例演示了在 JavaScript 中使用 createTextNode(string) 方法。

<!DOCTYPE html>
<html>
<body>
   <h2>Escape HTML special Chars in JavaScript.</h2>
   <h4> String After escaping the special characters: </h4>
   <p id = "contentDiv"> </p>
   <script type = "text/javascript">
      // function to escape special chars using createTextNode() method.
      function escapeSpecialChars() {
         let string_var = " <h1> tutorialsPoint </h1> ";
         let escapedString = document.createTextNode(string_var);
         contentDiv.appendChild(escapedString);
      }
      escapeSpecialChars();
   </script>
</body>
</html>

對於以上示例輸出,使用者可以觀察到我們使用 createTextNode() 方法建立了一個編碼後的字串,並將其插入到 HTML DOM 中。它按原樣呈現特殊字元,而不將其視為標籤元素。

使用 textContent 屬性

我們可以在 JavaScript 中建立一個 HTML 元素並新增 HTML 字串。我們可以使用 HTML Textarea 元素的 textContent 屬性並插入 HTML 字串。之後,我們可以使用 innerHTML 屬性獲取使用 Unicode 編碼的字串。

語法

let textAreaDiv = document.createElement( 'textarea' );
textAreaDiv.textContent = HTML_String;
let encoded_string = textAreaDiv.innerHTML;

引數

  • HTML_字串 − 我們可以將任何我們想要編碼的 HTML 字串作為此引數傳遞。

示例 2

使用者可以參考以下示例以檢視上述方法的演示。

<!DOCTYPE html>
<html >
<body>
   <h2>Escape HTML special Chars in javascript.</h2>
   <h4> String After escaping the special characters. </h4>
   <p id="resultDiv"> </p>
   <script type = "text/javascript">
      let textAreaDiv = document.createElement('textarea');
      var resultDiv = document.getElementById("resultDiv");
      textAreaDiv.textContent = "<div>Welcome to tutorialsPoint website.</div>";
      let encoded_string = textAreaDiv.innerHTML;
      resultDiv.innerHTML = encoded_string;
   </script>
</body>
</html>

使用者可以在以下輸出中看到如何使用 textContent 屬性對字串進行編碼。

使用 Replace() 方法

在這種方法中,我們將使用 JavaScript 的 replace() 方法。我們可以使用 replace() 方法將一個字元替換為另一個字元。在這裡,我們將使用 replace() 方法將 HTML 字串中的所有特殊字元替換為其 Unicode。

語法

html_string.replace( old_char, new_char )

引數

  • Html_字串 − 它是我們需要轉義特殊字元的字串。

  • 舊字元 − 它是需要替換的字串中的字元。

  • 新字元 − 它是我們將在舊字元位置新增到字串中的字元。

示例 3

以下示例演示瞭如何使用 replace() 方法替換特殊字元來對 HTML 字串進行編碼。

<!DOCTYPE html>
<html>
<body>
   <h2>Escape HTML special chars</h2>
   <p> Result after escaping the special characters. </p>
   <p id="result"></p>
   <script>
      // function to escape special chars using replace() method.
      function escapeSpecialChars(str) {
         return str
         .replace(/&/g, "&")
         .replace(/</g, "<")
         .replace(/>/g, ">")
         .replace(/"/g, """)
         .replace(/'/g, "'");
      }
      let string = ` <div> hello user! <i>your welcome</i> here. </div>`;
      let escape = escapeSpecialChars(string);
      document.getElementById("result").innerHTML = escape;
   </script>
</body>
</html>

使用者可以看到我們已經成功地使用 replace 方法替換了所有特殊字元,並且我們可以按原樣呈現包含特殊字元的字串。

結論

在本教程中,我們學習了三種在 HTML 中替換特殊字元的方法。使用者可以根據自己的需要使用任何方法。

更新於: 2022-07-14

9K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告