CustomElementRegistry
interface provides methods for registering custom elements and querying registered elements. To get an instance of it, use the
window.customElements
特性。
CustomElementRegistry.define()
CustomElementRegistry.get()
undefined
if the custom element is not defined.
CustomElementRegistry.upgrade()
Upgrades a custom element directly, even before it is connected to its shadow root.
CustomElementRegistry.whenDefined()
promise
that resolves when a custom element becomes defined with the given name. If such a custom element is already defined, the returned promise is immediately fulfilled.
The following code is taken from our
word-count-web-component
example (
see it live also
). Note how we use the
CustomElementRegistry.define()
method to define the custom element after creating its class.
// Create a class for the element
class WordCount extends HTMLParagraphElement {
constructor() {
// Always call super first in constructor
super();
// count words in element's parent element
var wcParent = this.parentNode;
function countWords(node){
var text = node.innerText || node.textContent
return text.split(/\s+/g).length;
}
var count = 'Words: ' + countWords(wcParent);
// Create a shadow root
var shadow = this.attachShadow({mode: 'open'});
// Create text node and add word count to it
var text = document.createElement('span');
text.textContent = count;
// Append it to the shadow root
shadow.appendChild(text);
// Update count when element content changes
setInterval(function() {
var count = 'Words: ' + countWords(wcParent);
text.textContent = count;
}, 200)
}
}
// Define the new element
customElements.define('word-count', WordCount, { extends: 'p' });
注意:
CustomElementRegistry
is available through the
Window.customElements
特性。
| 规范 | 状态 | 注释 |
|---|---|---|
|
HTML 实时标准
The definition of 'CustomElementRegistry' in that specification. |
实时标准 | 初始定义。 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
CustomElementRegistry
|
Chrome 54 | Edge 79 |
Firefox
63
|
IE No | Opera 41 | Safari 10.1 | WebView Android 54 | Chrome Android 54 |
Firefox Android
63
|
Opera Android 41 | Safari iOS 10.3 | Samsung Internet Android 6.0 |
| Customized built-in element support | Chrome 66 | Edge 79 |
Firefox
63
|
IE No | Opera 53 | Safari No | WebView Android 66 | Chrome Android 66 |
Firefox Android
63
|
Opera Android 47 | Safari iOS No | Samsung Internet Android 9.0 |
define
|
Chrome
66
|
Edge
79
|
Firefox
63
|
IE No |
Opera
53
|
Safari
10.1
|
WebView Android
66
|
Chrome Android
66
|
Firefox Android
63
|
Opera Android
47
|
Safari iOS
10.3
|
Samsung Internet Android
9.0
|
get
|
Chrome
66
|
Edge
79
|
Firefox
63
|
IE No |
Opera
53
|
Safari
10.1
|
WebView Android
66
|
Chrome Android
66
|
Firefox Android
63
|
Opera Android
47
|
Safari iOS
10.3
|
Samsung Internet Android
9.0
|
upgrade
|
Chrome 68 | Edge 79 | Firefox 63 | IE No | Opera 55 | Safari ? | WebView Android 68 | Chrome Android 68 | Firefox Android 63 | Opera Android 48 | Safari iOS ? | Samsung Internet Android 10.0 |
whenDefined
|
Chrome
66
|
Edge
79
|
Firefox
63
|
IE No |
Opera
53
|
Safari
10.1
|
WebView Android
66
|
Chrome Android
66
|
Firefox Android
63
|
Opera Android
47
|
Safari iOS
10.3
|
Samsung Internet Android
9.0
|
完整支持
不支持
兼容性未知
实验。期望将来行为有所改变。
见实现注意事项。
用户必须明确启用此特征。