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

注意: 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.

冒泡 Yes
可取消 No
接口 事件
事件处理程序特性 None

In order to trigger a slotchange event, one has to set or remove the slot 属性。

范例

element.setAttribute('slot', slotName);
// element.assignedSlot = $slot
element.removeAttribute('slot');
// element.assignedSlot = null
					

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.

规范

规范 状态 注释
DOM
The definition of '"Mutation observers" and slotchange event' in that specification.
实时标准 初始定义

浏览器兼容性

更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
slotchange event Chrome 53 Edge 79 Firefox 63
63
不支持 59 — 63 Disabled
Disabled From version 59 until version 63 (exclusive): this feature is behind the dom.webcomponents.shadowdom.enabled preference (needs to be set to true ). To change preferences in Firefox, visit about:config.
不支持 ? — 59 Disabled
Disabled Until version 59 (exclusive): this feature is behind the dom.webcomponents.enabled preference (needs to be set to true ) 和 preference (needs to be set to ). To change preferences in Firefox, visit about:config.
IE No Opera 40 Safari 10.1 WebView Android 53 Chrome Android 53 Firefox Android 63
63
不支持 59 — 63 Disabled
Disabled From version 59 until version 63 (exclusive): this feature is behind the dom.webcomponents.shadowdom.enabled preference (needs to be set to true ). To change preferences in Firefox, visit about:config.
不支持 ? — 59 Disabled
Disabled Until version 59 (exclusive): this feature is behind the dom.webcomponents.enabled preference (needs to be set to true ) 和 preference (needs to be set to ). To change preferences in Firefox, visit about:config.
Opera Android 41 Safari iOS 10.3 Samsung Internet Android 6.0

图例

完整支持

完整支持

不支持

不支持

实验。期望将来行为有所改变。

实验。期望将来行为有所改变。

用户必须明确启用此特征。

用户必须明确启用此特征。

另请参阅

HTMLSlotElement

元数据

  • 最后修改:
  1. HTMLSlotElement
  2. 特性
    1. 名称
  3. 方法
    1. assignedElements()
    2. assignedNodes()
  4. 事件
    1. slotchange