The HTMLSlotElement interface of the Shadow DOM API enables access to the name and assigned nodes of an HTML <slot> element.
Properties
HTMLSlotElement.nameDOMString: Can be used to get and set the slot's name.
Methods
HTMLSlotElement.assignedNodes()- Returns a sequence of the nodes assigned to this slot, and if the
flattenoption is set totrue, the assigned nodes of any other slots that are descendants of this slot. If no assigned nodes are found, it returns the slot's fallback content. HTMLSlotElement.assignedElements()- Returns a sequence of the elements assigned to this slot (and no other nodes). If the
flattenoption is set totrue, it also returns the assigned elements of any other slots that are descendants of this slot. If no assigned nodes are found, it returns the slot's fallback content.
Examples
The following snippet is taken from our slotchange example (see it live also).
let slots = this.shadowRoot.querySelectorAll('slot');
slots[1].addEventListener('slotchange', function(e) {
let nodes = slots[1].assignedNodes();
console.log('Element in Slot "' + slots[1].name + '" changed to "' + nodes[0].outerHTML + '".');
});
Here we grab references to all the slots, then add a slotchange event listener to the 2nd slot in the template — which is the one that keeps having its contents changed in the example.
Every time the element inserted in the slot changes, we log a report to the console saying which slot has changed, and what the new node inside the slot is.
Specifications
| Specification | Status | Comment |
|---|---|---|
| HTML Living Standard The definition of 'HTMLSlotElement' in that specification. |
Living Standard |
Browser compatibility
| Desktop | Mobile | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
HTMLSlotElement | Chrome Full support 53 | Edge
No support
No
| Firefox
Full support
63
| IE No support No | Opera Full support 40 | Safari Full support 10.1 | WebView Android Full support 53 | Chrome Android Full support 53 | Edge Mobile
No support
No
| Firefox Android
Full support
63
| Opera Android Full support 40 | Safari iOS Full support 10.1 | Samsung Internet Android Full support 6.0 |
name | Chrome Full support 53 | Edge
No support
No
| Firefox
Full support
63
| IE No support No | Opera Full support 40 | Safari Full support 10.1 | WebView Android Full support 53 | Chrome Android Full support 53 | Edge Mobile
No support
No
| Firefox Android
Full support
63
| Opera Android Full support 40 | Safari iOS Full support 10.1 | Samsung Internet Android Full support 6.0 |
assignedElements | Chrome Full support 65 | Edge No support No | Firefox Full support 66 | IE No support No | Opera ? | Safari ? | WebView Android Full support 65 | Chrome Android Full support 65 | Edge Mobile No support No | Firefox Android Full support 66 | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
assignedNodes | Chrome Full support 53 | Edge
No support
No
| Firefox
Full support
63
| IE No support No | Opera Full support 40 | Safari Full support 10.1 | WebView Android Full support 53 | Chrome Android Full support 53 | Edge Mobile
No support
No
| Firefox Android
Full support
63
| Opera Android Full support 40 | Safari iOS Full support 10.1 | Samsung Internet Android Full support 6.0 |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
- See implementation notes.
- See implementation notes.
- User must explicitly enable this feature.
- User must explicitly enable this feature.

