| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/API/Element/insertAdjacentHTML | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit April 2018 browserbergreifend verfgbar.
Warnung: Diese Methode analysiert ihre Eingabe als HTML oder XML und schreibt das Ergebnis in das DOM. APIs wie diese sind als Injection-Senken bekannt und knnen potenziell ein Vektor fr Cross-Site-Scripting (XSS)-Angriffe sein, wenn die Eingabe ursprnglich von einem Angreifer stammt.
Sie knnen das Risiko reduzieren, indem Sie TrustedHTML-Objekte anstelle von Zeichenketten zuweisen und vertrauenswrdige Typen erzwingen, indem Sie die CSP-Direktive require-trusted-types-for verwenden.
Dies stellt sicher, dass die Eingabe durch eine Transformationsfunktion geleitet wird, die die Chance hat, die Eingabe zu sanitieren, um potenziell gefhrliches Markup wie <script>-Elemente und Event-Handler-Attribute zu entfernen.
Die insertAdjacentHTML()-Methode der Element-Schnittstelle analysiert die angegebene Eingabe als HTML oder XML und fgt die resultierenden Knoten an einer bestimmten Position in den DOM-Baum ein.
insertAdjacentHTML(position, input)
positionEin String, der die Position relativ zu dem Element darstellt. Muss einer der folgenden Strings sein:
"beforebegin"Vor dem Element. Nur gltig, wenn das Element im DOM-Baum ist und ein bergeordnetes Element hat.
"afterbegin"Direkt innerhalb des Elements, vor seinem ersten Kind.
"beforeend"Direkt innerhalb des Elements, nach seinem letzten Kind.
"afterend"Nach dem Element. Nur gltig, wenn das Element im DOM-Baum ist und ein bergeordnetes Element hat.
inputEine TrustedHTML-Instanz oder Zeichenkette, die das zu analysierende HTML oder XML definiert.
Keiner (undefined).
Diese Methode kann eine DOMException der folgenden Typen auslsen:
NoModificationAllowedError DOMExceptionWird ausgelst, wenn position "beforebegin" oder "afterend" ist und das Element entweder kein bergeordnetes Element hat oder dessen bergeordnetes Element das Document-Objekt ist.
SyntaxError DOMExceptionWird ausgelst, wenn:
position nicht einer der vier aufgelisteten Werte ist.TypeErrorWird ausgelst, wenn die Eigenschaft auf eine Zeichenkette gesetzt wird, whrend Trusted Types durch eine CSP erzwungen werden und keine Standardrichtlinie definiert ist.
Die Methode insertAdjacentHTML() analysiert nicht erneut das Element, auf dem sie verwendet wird, und beschdigt daher nicht die bereits vorhandenen Elemente innerhalb dieses Elements. Dies vermeidet den zustzlichen Schritt der Serialisierung und macht sie viel schneller als die direkte Manipulation von innerHTML.
Wenn <p> das Element ist, knnen wir die mglichen Positionen fr den eingefgten Inhalt "foo" wie folgt visualisieren:
<!-- beforebegin -->
<p>
<!-- afterbegin -->
foo
<!-- beforeend -->
</p>
<!-- afterend -->
Die Methode enthlt keine spezielle Behandlung fr <template>-Elemente.
In den meisten Fllen sollten Entwickler insertAdjacentHTML() auf der content-Eigenschaft der Vorlage verwenden, anstatt die Kindknoten eines Vorlagenelements direkt zu manipulieren.
Die Methode fhrt keine Sanitierung durch, um XSS-unsichere Elemente wie <script> oder Event-Handler-Attributinhalte zu entfernen.
Wenn Sie HTML auf eine Seite einfgen, sollten Sie TrustedHTML-Objekte anstelle von Zeichenketten verwenden und vertrauenswrdige Typen erzwingen mit der CSP-Direktive require-trusted-types-for.
Dies stellt sicher, dass die Eingabe durch eine Transformationsfunktion geleitet wird, die die Chance hat, die Eingabe zu sanitieren, um potenziell gefhrliches Markup zu entfernen, bevor es eingefgt wird.
Die Methode Element.insertAdjacentText() oder Node.textContent sollte verwendet werden, wenn Sie wissen, dass der vom Benutzer bereitgestellte Inhalt reiner Text sein sollte.
Dies fgt die Eingabe als Rohtext ein, anstatt sie als HTML zu analysieren.
Dieses Beispiel demonstriert die vier Einfgepositionen. Alle eingefgten Texte sind fett, whrend Texte, die innerhalb des Elements eingefgt werden, zustzlich als roter Monotyp (Code) formatiert sind.
<select id="position">
<option>beforebegin</option>
<option>afterbegin</option>
<option>beforeend</option>
<option>afterend</option>
</select>
<button id="insert">Insert HTML</button>
<button id="reset">Reset</button>
<p>
Some text, with a <code id="subject">code-formatted element</code> inside it.
</p>
code {
color: red;
}
Vertrauenswrdige Typen werden nicht auf allen Browsern untersttzt, daher definieren wir zuerst den trusted types tinyfill. Dies fungiert als transparenter Ersatz fr die Trusted Types JavaScript API:
if (typeof trustedTypes === "undefined")
trustedTypes = { createPolicy: (n, rules) => rules };
Als nchstes definieren wir eine Richtlinie namens some-content-policy, um TrustedHTML-Objekte aus der Eingabe zu erstellen (wir sollten die some-content-policy auch mit CSP erzwingen).
Der Code implementiert eine No-Op-Richtlinie, um es diesem Beispiel zu ermglichen, ohne eine Drittanbieter-Abhngigkeit zu funktionieren.
Ihr eigener Anwendungscode sollte eine Drittanbieter-Bibliothek wie die "DOMPurify"-Bibliothek verwenden, um bereinigte Inhalte aus der nicht vertrauenswrdigen Eingabe zurckzugeben.
const policy = trustedTypes.createPolicy("some-content-policy", {
createHTML(input) {
return input; // Do not do this in your own code!
// Instead do something like:
// return DOMPurify.sanitize(input);
},
});
const unsafeText = "<strong>inserted text</strong>";
const trustedHTML = policy.createHTML(unsafeText);
Der verbleibende Code fgt das vertrauenswrdige HTML an der ausgewhlten Position relativ zu dem Element mit der ID subject ein.
const insert = document.querySelector("#insert");
insert.addEventListener("click", () => {
const subject = document.querySelector("#subject");
const positionSelect = document.querySelector("#position");
subject.insertAdjacentHTML(positionSelect.value, trustedHTML);
});
const reset = document.querySelector("#reset");
reset.addEventListener("click", () => {
document.location.reload();
});
| Spezifikation |
|---|
| HTML # the-insertadjacenthtml()-method |
Element.insertAdjacentElement()Element.insertAdjacentText()XMLSerializer: Serialisieren eines DOM-Baums in einen XML-StringElementactiveViewTransitionariaActiveDescendantElementariaAtomicariaAutoCompleteariaBrailleLabelariaBrailleRoleDescriptionariaBusyariaCheckedariaColCountariaColIndexariaColIndexTextariaColSpanariaControlsElementsariaCurrentariaDescribedByElementsariaDescriptionariaDetailsElementsariaDisabledariaErrorMessageElementsariaExpandedariaFlowToElementsariaHasPopupariaHiddenariaInvalidariaKeyShortcutsariaLabelariaLabelledByElementsariaLevelariaLiveariaModalariaMultiLineariaMultiSelectableariaOrientationariaOwnsElementsariaPlaceholderariaPosInSetariaPressedariaReadOnlyariaRelevantariaRequiredariaRoleDescriptionariaRowCountariaRowIndexariaRowIndexTextariaRowSpanariaSelectedariaSetSizeariaSortariaValueMaxariaValueMinariaValueNowariaValueTextassignedSlotattributeschildElementCountchildrenclassListclassNameclientHeightclientLeftclientTopclientWidthcurrentCSSZoomcustomElementRegistryelementTimingfirstElementChildidinnerHTMLlastElementChildlocalNamenamespaceURInextElementSiblingouterHTMLpartprefixpreviousElementSiblingrolescrollHeightscrollLeftscrollLeftMaxscrollTopscrollTopMaxscrollWidthshadowRootslottagNameafter()animate()append()ariaNotify()attachShadow()before()checkVisibility()closest()computedStyleMap()getAnimations()getAttribute()getAttributeNames()getAttributeNode()getAttributeNodeNS()getAttributeNS()getBoundingClientRect()getClientRects()getElementsByClassName()getElementsByTagName()getElementsByTagNameNS()getHTML()hasAttribute()hasAttributeNS()hasAttributes()hasPointerCapture()insertAdjacentElement()insertAdjacentHTML()insertAdjacentText()matches()moveBefore()prepend()pseudo()querySelector()querySelectorAll()releasePointerCapture()remove()removeAttribute()removeAttributeNode()removeAttributeNS()replaceChildren()replaceWith()requestFullscreen()requestPointerLock()scroll()scrollBy()scrollIntoView()scrollIntoViewIfNeeded()scrollTo()setAttribute()setAttributeNode()setAttributeNodeNS()setAttributeNS()setCapture()setHTML()setHTMLUnsafe()setPointerCapture()startViewTransition()toggleAttribute()afterscriptexecuteanimationcancelanimationendanimationiterationanimationstartauxclickbeforeinputbeforematchbeforescriptexecutebeforexrselectblurclickcompositionendcompositionstartcompositionupdatecontentvisibilityautostatechangecontextmenucopycutdblclickDOMActivateDOMMouseScrollfocusfocusinfocusoutfullscreenchangefullscreenerrorgesturechangegestureendgesturestartgotpointercaptureinputkeydownkeypresskeyuplostpointercapturemousedownmouseentermouseleavemousemovemouseoutmouseovermouseupmousewheelMozMousePixelScrollpastepointercancelpointerdownpointerenterpointerleavepointermovepointeroutpointeroverpointerrawupdatepointerupscrollscrollendscrollsnapchangescrollsnapchangingsecuritypolicyviolationtouchcanceltouchendtouchmovetouchstarttransitioncanceltransitionendtransitionruntransitionstartwebkitmouseforcechangedwebkitmouseforcedownwebkitmouseforceupwebkitmouseforcewillbeginwheelAbortControllerAbortSignalAbstractRangeAttrCDATASectionCharacterDataCommentCustomEventDOMErrorDOMExceptionDOMImplementationDOMParserDOMTokenListDocumentDocumentFragmentDocumentTypeEventEventTargetHTMLCollectionMutationObserverMutationRecordNamedNodeMapNodeNodeIteratorNodeListProcessingInstructionQuotaExceededErrorRangeShadowRootStaticRangeTextTreeWalkerXMLDocumentXPathEvaluatorXPathExpressionXPathResultXSLTProcessorDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |