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.
Events
slotchange- Fired on an
HTMLSlotElementinstance (<slot>element) when the node(s) contained in that slot change.
Examples
The following snippet is taken from our slotchange example ([[../../../../../../mdn.github.io/web-components-examples/slotchange/index|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 StandardThe definition of 'HTMLSlotElement' in that specification. | Living Standard |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Chrome
Full support 53 |
Edge
Full support 79 |
Firefox Full support 63 Full support 63 No support 59 — 63 Disabled' From version 59 until version 63 (exclusive): this feature is behind the Disabled' Until version 59 (exclusive): this feature is behind the |
IE
No support No |
Opera
Full support 40 |
Safari
Full support 10.1 |
WebView Android
Full support 53 |
Chrome Android
Full support 53 |
Firefox Android Full support 63 Full support 63 No support 59 — 63 Disabled' From version 59 until version 63 (exclusive): this feature is behind the Disabled' Until version 59 (exclusive): this feature is behind the |
Opera Android
Full support 41 |
Safari iOS
Full support 10.3 |
Samsung Internet Android
Full support 6.0 |
| Chrome
Full support 65 |
Edge
Full support 79 |
Firefox
Full support 66 |
IE
No support No |
Opera
Full support Yes |
Safari
? |
WebView Android
Full support 65 |
Chrome Android
Full support 65 |
Firefox Android
Full support 66 |
Opera Android
Full support Yes |
Safari iOS
? |
Samsung Internet Android
Full support 9.0 | |
| Chrome
Full support 53 |
Edge
Full support 79 |
Firefox Full support 63 Full support 63 No support 59 — 63 Disabled' From version 59 until version 63 (exclusive): this feature is behind the Disabled' Until version 59 (exclusive): this feature is behind the |
IE
No support No |
Opera
Full support 40 |
Safari
Full support 10.1 |
WebView Android
Full support 53 |
Chrome Android
Full support 53 |
Firefox Android Full support 63 Full support 63 No support 59 — 63 Disabled' From version 59 until version 63 (exclusive): this feature is behind the Disabled' Until version 59 (exclusive): this feature is behind the |
Opera Android
Full support 41 |
Safari iOS
Full support 10.3 |
Samsung Internet Android
Full support 6.0 | |
| Chrome
Full support 53 |
Edge
Full support 79 |
Firefox Full support 63 Full support 63 No support 59 — 63 Disabled' From version 59 until version 63 (exclusive): this feature is behind the Disabled' Until version 59 (exclusive): this feature is behind the |
IE
No support No |
Opera
Full support 40 |
Safari
Full support 10.1 |
WebView Android
Full support 53 |
Chrome Android
Full support 53 |
Firefox Android Full support 63 Full support 63 No support 59 — 63 Disabled' From version 59 until version 63 (exclusive): this feature is behind the Disabled' Until version 59 (exclusive): this feature is behind the |
Opera Android
Full support 41 |
Safari iOS
Full support 10.3 |
Samsung Internet Android
Full support 6.0 | |
| Chrome
Full support 53 |
Edge
Full support 79 |
Firefox Full support 63 Full support 63 No support 59 — 63 Disabled' From version 59 until version 63 (exclusive): this feature is behind the Disabled' Until version 59 (exclusive): this feature is behind the |
IE
No support No |
Opera
Full support 40 |
Safari
Full support 10.1 |
WebView Android
Full support 53 |
Chrome Android
Full support 53 |
Firefox Android Full support 63 Full support 63 No support 59 — 63 Disabled' From version 59 until version 63 (exclusive): this feature is behind the Disabled' Until version 59 (exclusive): this feature is behind the |
Opera Android
Full support 41 |
Safari iOS
Full support 10.3 |
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.
- User must explicitly enable this feature.'
- User must explicitly enable this feature.
HTMLSlotElement by Mozilla Contributors is licensed under CC-BY-SA 2.5.