CustomElementRegistry.whenDefined()

这篇翻译不完整。请帮忙从英语翻译这篇文章

 当一个元素被定义时CustomElementRegistry 中的方法whenDefined() 接口返回  Promise.

语法

Promise<> customElements.whenDefined(name);

参数

name
自定义元素的名称

返回值

当自定义元素被定义时一个Promise 返回{jsxref("undefined")}}. 如果自定义元素已经被定义,则resolve立即执行。

例外

Exception Description
SyntaxError If the provided name is not a valid custom element name, the promise rejects with a SyntaxError.

例子

这个例子使用whenDefined() 来检测生成菜单的自定义元素何时被定义. 这个菜单显示占位符内容一直到菜单内容已经准备好显示.

<nav id="menu-container">
  <div class="menu-placeholder">Loading...</div>
  <nav-menu>
    <menu-item>Item 1</menu-item>
    <menu-item>Item 2</menu-item>
     ...
    <menu-item>Item N</menu-item>
  </nav-menu>
</nav>
const container = document.getElementById('menu-container');
const placeholder = container.querySelector('.menu-placeholder');
// Fetch all the children of menu that are not yet defined.
const undefinedElements = container.querySelectorAll(':not(:defined)');

const promises = [...undefinedElements].map(
  button => customElements.whenDefined(button.localName)
);

// Wait for all the children to be upgraded, 
// then remove the placeholder.
await Promise.all(promises);
container.removeChild(placeholder);

规范

Specification Status Comment
HTML Living Standard
customElements.whenDefined()
Living Standard Initial definition.

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic support
Experimental
Chrome Full support 66
Notes
Full support 66
Notes
Notes Support for 'Customized built-in elements' as well.
Full support 54
Notes
Notes Support for 'Autonomous custom elements' only.
Edge No support No
Notes
No support No
Notes
Notes Under consideration
Firefox Full support 63
Full support 63
Full support 59
Disabled
Disabled From version 59: this feature is behind the dom.webcomponents.customelements.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
No support ? — 59
Disabled
Disabled 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.
IE No support NoOpera Full support 53
Notes
Full support 53
Notes
Notes Support for 'Customized built-in elements' as well.
Full support 41
Notes
Notes Support for 'Autonomous custom elements' only.
Safari Full support 10.1
Notes
Full support 10.1
Notes
Notes Supports 'Autonomous custom elements' but not 'Customized built-in elements'
WebView Android Full support 66
Notes
Full support 66
Notes
Notes Support for 'Customized built-in elements' as well.
Full support 54
Notes
Notes Support for 'Autonomous custom elements' only.
Chrome Android Full support 66
Notes
Full support 66
Notes
Notes Support for 'Customized built-in elements' as well.
Full support 54
Notes
Notes Support for 'Autonomous custom elements' only.
Edge Mobile No support No
Notes
No support No
Notes
Notes Under consideration
Firefox Android Full support 63
Full support 63
Full support 59
Disabled
Disabled From version 59: this feature is behind the dom.webcomponents.customelements.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
No support ? — 59
Disabled
Disabled 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.
Opera Android Full support 53
Notes
Full support 53
Notes
Notes Support for 'Customized built-in elements' as well.
Full support 41
Notes
Notes Support for 'Autonomous custom elements' only.
Safari iOS Full support 10.1
Notes
Full support 10.1
Notes
Notes Supports 'Autonomous custom elements' but not 'Customized built-in elements'
Samsung Internet Android Full support 6.0
Notes
Full support 6.0
Notes
Notes Support for 'Autonomous custom elements' only.

Legend

Full support  
Full support
No support  
No support
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.

文档标签和贡献者

此页面的贡献者: bluetomlee
最后编辑者: bluetomlee,