The slotchange event is fired on an HTMLSlotElement instance (<slot> element) when the node(s) contained in that slot change.
Note: the slotchange event doesn't fire if the children of a slotted node change — only if you change (e.g. add or delete) the actual nodes themselves.
| Bubbles | Yes |
| Cancelable | No |
| Target objects | HTMLSlotElement |
| Interface | Event |
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 <slot>s, then add a slotchange event listener to the template's second slot — which is the one which has 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.
The slotchange event implements the Event interface — it has available the properties and methods defined on this interface.
| Specification | Status | Comment |
|---|---|---|
| DOM The definition of '"Mutation observers" and slotchange event' in that specification. | Living Standard | Initial definition |
| Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support | (Yes) | No support1 |
(Yes)2 3 63 (63) | No support | (Yes) | (Yes) |
| Feature | WebView Android | Chrome Android | Edge Mobile | Firefox Android | Opera Android | Safari iOS |
|---|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | No support1 |
(Yes)2 3 63.0 (63) | (Yes) | (Yes) |
2. Until version 59 (exclusive): this feature is behind the dom.webcomponents.enabled preference (needs to be set to true) and the dom.webcomponents.customelements.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
3. From version 59: this feature is behind the dom.webcomponents.shadowdom.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/Events/slotchange