javascript / expert
Snippet
Shadow-DOM-Kapselungsschutz für benutzerdefinierte Elemente
Demonstriert strikte DOM-Isolierung durch Erstellen eines geschlossenen ShadowRoots und Einfrieren seiner Knotenreferenz. Dies verhindert, dass externe Skripte interne Komponenten-Knoten abfragen oder verändern.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export class EncapsulatedWidget extends HTMLElement {#root = this.attachShadow({ mode: 'closed' });connectedCallback() {Object.freeze(this.#root);const container = document.createElement('div');container.setAttribute('data-secure', 'true');container.textContent = 'Isolated Boundary';this.#root.appendChild(container);}}if (!customElements.get('x-secure-widget')) {customElements.define('x-secure-widget', EncapsulatedWidget);}
vue
Erklärung
1
#root = this.attachShadow({ mode: 'closed' });
Erstellt einen geschlossenen ShadowRoot, der den Zugriff über element.shadowRoot verhindert.
2
Object.freeze(this.#root);
Friert das interne Root-Objekt ein, um Eigenschaftsmanipulationen zu blockieren.
3
customElements.define('x-secure-widget', EncapsulatedWidget);
Registriert die benutzerdefinierte Elementklasse in der CustomElementRegistry des Browsers.