Sanitizer: replaceElementWithChildren() 方法
replaceElementWithChildren() 方法是 Sanitizer 介面的一個方法,它會設定一個元素,在 sanitizer 使用時,該元素將被其子 HTML 元素替換。該方法主要用於剝離文字中的樣式。
指定的元素及其名稱空間會被新增到此 sanitizer 配置的 replaceWithChildrenElements 列表中。如果元素存在於 elements 或 removeElements 列表中,則會被移除。
語法
replaceElementWithChildren(element)
引數
element-
一個字串,表示要被替換的元素的名稱,或者一個具有以下屬性的物件
name-
一個包含元素名稱的字串。
namespace可選-
一個包含元素名稱空間的字串。預設名稱空間為
"http://www.w3.org/1999/xhtml"。
返回值
無 (undefined)。
示例
基本用法
此示例展示了該方法的基本用法,配置了一個 sanitizer,該 sanitizer 會將輸入中的 <em> 元素替換為其子內容。
// Create sanitizer (in this case the default)
const sanitizer = new Sanitizer();
// Replace <em> elements with their innerHTML
sanitizer.replaceElementWithChildren("em");
如何剝離文字中的樣式
此示例展示瞭如何使用 replaceElementWithChildren() 來剝離文字中的樣式。
JavaScript
程式碼首先建立一個新的 Sanitizer 物件,該物件最初允許 <p>、<em> 和 <strong> 元素。然後,我們在 sanitizer 上呼叫 replaceElementWithChildren(),指定 <strong> 元素應該被替換。
程式碼定義了一個包含 <strong> 元素的字串,並使用帶有 sanitizer 的 Element.setHTML() 來注入該字串。然後會記錄原始字串、來自元素的已淨化 HTML 以及 sanitizer。
// Create sanitizer using SanitizerConfig
const sanitizer = new Sanitizer({
elements: ["p", "em", "strong"],
});
// Replace the <strong> element
sanitizer.replaceElementWithChildren("strong");
const unsanitizedString = `<p>This is a with <strong>important</strong> text <em>highlighted</em>.</p>`;
log(`unsanitizedHTMLString:\n ${unsanitizedString}`);
// Create a <div> element
const divElement = document.createElement("div");
divElement.setHTML(unsanitizedString, { sanitizer });
log(`\n\nsanitizedHTML:\n ${divElement.innerHTML}`);
// Log the sanitizer configuration
const sanitizerConfig = sanitizer.get();
log(`\n\nsanitizerConfig:\n ${JSON.stringify(sanitizerConfig, null, 2)}`);
結果
下面記錄了原始的未淨化 HTML 字串、來自元素的已淨化字串以及 sanitizer。請注意,文字中的 <strong> 樣式已被剝離,但 <em> 元素沒有。同時請注意,<strong> 元素最初位於配置的 elements 列表中,但在被新增到 replaceWithChildrenElements 列表時被移除了。
規範
| 規範 |
|---|
| HTML Sanitizer API # dom-sanitizer-replaceelementwithchildren |
瀏覽器相容性
載入中…