slotchange

The slotchange event is fired on an HTMLSlotElement instance (<slot> element) when the node(s) contained in that slot change.

Note that it doesn't fire if you change the node contents — only if you change (e.g. add or delete) the actual nodes themselves.

Bubbles No
Cancelable No
Target objects HTMLSlotElement
Interface Event

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.

Inheritance

The slotchange event implements the Event interface — it has available the properties and methods defined on this interface.

Specifications

Specification Status Comment
DOM
The definition of '"Mutation observers" and slotchange event' in that specification.
Living Standard  

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support (Yes) (Yes) No support (Yes) ?
Feature Android Chrome Firefox Mobile (Gecko) Opera Mobile Safari Mobile
Basic support ? (Yes) (Yes) (Yes) ?

Document Tags and Contributors

 Contributors to this page: chrisdavidmills
 Last updated by: chrisdavidmills,