Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
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.

namespace Optional

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.

js
// 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.

js
// 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

Browser-Kompatibilität