Sanitizer: replaceElementWithChildren() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die replaceElementWithChildren()-Methode der Sanitizer-Schnittstelle legt fest, dass ein Element durch seine Kind-HTML-Elemente ersetzt wird, wenn der Sanitizer verwendet wird. Dies wird hauptsächlich verwendet, um Stile aus Text zu entfernen.
Syntax
replaceElementWithChildren(element)
Parameter
element-
Ein String, der den Namen des zu ersetzenden Elements angibt, oder ein Objekt mit den folgenden Eigenschaften:
name-
Ein String, der den Namen des Elements enthält.
namespaceOptional-
Ein String, der den Namespace des Elements enthält. Der Standard-Namespace ist
"http://www.w3.org/1999/xhtml".
Rückgabewert
true, wenn die Operation die Konfiguration dahingehend geändert hat, das Element durch seine Kinder zu ersetzen, und false, wenn der Sanitizer das Element bereits ersetzte.
Beispiele
>Grundlegende Verwendung
Dieses Beispiel zeigt die grundlegende Verwendung der Methode, die einen Sanitizer konfiguriert, der das <em>-Element in Eingaben durch seinen Kind-Inhalt ersetzt.
// Create sanitizer (in this case the default)
const sanitizer = new Sanitizer();
// Replace <em> elements with their innerHTML
sanitizer.replaceElementWithChildren("em");
Anleitung zum Entfernen von Stilen aus Text
Dieses Beispiel zeigt, wie replaceElementWithChildren() verwendet werden kann, um Stile aus Text zu entfernen.
JavaScript
Der Code erstellt zuerst ein neues Sanitizer-Objekt, das anfänglich <p>, <em> und <strong>-Elemente zulässt. Wir rufen dann replaceElementWithChildren() am Sanitizer auf und geben an, dass <strong>-Elemente ersetzt werden sollen.
Der Code definiert einen String, der <strong>-Elemente enthält, und nutzt Element.setHTML() mit dem Sanitizer, um den String einzufügen. Der Originalstring, das sanitierte HTML aus dem Element und der Sanitizer werden geloggt.
// 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)}`);
Ergebnisse
Der ursprüngliche unsanitisierte HTML-String, der sanitisierte String aus dem Element und der Sanitizer werden unten geloggt. Beachten Sie, dass das <strong>-Styling aus dem Text entfernt wurde, aber das <em>-Element nicht. Beachten Sie auch, dass das <strong>-Element ursprünglich in der elements-Liste der Konfiguration war, aber entfernt wurde, als es zur replaceWithChildrenElements-Liste hinzugefügt wurde.
Spezifikationen
| Specification |
|---|
| HTML Sanitizer API> # dom-sanitizer-replaceelementwithchildren> |