CustomElementRegistry: define() ã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2020å¹´1æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
define() 㯠CustomElementRegistry ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã§ãã«ã¹ã¿ã è¦ç´ ã®å®ç¾©ãã«ã¹ã¿ã è¦ç´ ã¬ã¸ã¹ããªã¼ã«è¿½å ãããã®ååãããã®è¦ç´ ã使ããéã«ä½¿ç¨ããã³ã³ã¹ãã©ã¯ã¿ã¼ã«é¢é£ä»ãã¾ãã
æ§æ
define(name, constructor)
define(name, constructor, options)
弿°
name-
æ°ããã«ã¹ã¿ã è¦ç´ ã®ååã§ããã«ã¹ã¿ã è¦ç´ ã®ååã¯ãå°ãªãã¨ã 1 ã¤ã®ãã¤ãã³ãå«ã¾ãªããã°ãªããªããã¨ã«æ³¨æãã¦ãã ããã
constructor-
æ°ããã«ã¹ã¿ã è¦ç´ ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã
optionsçç¥å¯-
è¦ç´ ã®å®ç¾©ã®ä»æ¹ãå¶å¾¡ãããªãã¸ã§ã¯ããç¾å¨ã¯ã次㮠1 ã¤ã®ãªãã·ã§ã³ã®ã¿ã«å¯¾å¿ãã¦ãã¾ãã
extends-
æ¡å¼µããçµã¿è¾¼ã¿è¦ç´ ã®ååã示ãæååã ã«ã¹ã¿ã çµã¿è¾¼ã¿è¦ç´ ã使ããã®ã«ä½¿ããã¾ãã
è¿å¤
ãªãã
ä¾å¤
NotSupportedErrorDOMException-
次ã®ãããªå ´åã«çºçãã¾ãã
CustomElementRegistryã«æ¢ã«åãååã®é ç®ã¾ãã¯åãã³ã³ã¹ãã©ã¯ã¿ã¼ãå«ã¾ãã¦ããï¼ã¾ãã¯æ¢ã«å®ç¾©ããã¦ããï¼å ´åãextendsãªãã·ã§ã³ãæå®ããã¦ããããããæå¹ãªã«ã¹ã¿ã è¦ç´ åã§ãã£ãå ´åï¼ã¤ã¾ããã«ã¹ã¿ã è¦ç´ ãæ¡å¼µãããã¨ãã¦ããå ´åï¼ãextendsãªãã·ã§ã³ãæå®ããã¦ããããã®è¦ç´ ãæªç¥ã®è¦ç´ ãæ¡å¼µãããã¨ããå ´åã
SyntaxErrorDOMException-
æå®ãããååãæå¹ãªã«ã¹ã¿ã è¦ç´ åã§ã¯ãªãã£ãå ´åã«çºçãã¾ãã
TypeError-
åç §ãããã³ã³ã¹ãã©ã¯ã¿ã¼ãã³ã³ã¹ãã©ã¯ã¿ã¼ã§ã¯ãªãã£ãå ´åã«çºçãã¾ãã
解説
define() ã¡ã½ããã¯ãã«ã¹ã¿ã è¦ç´ ã®å®ç¾©ãã«ã¹ã¿ã è¦ç´ ã¬ã¸ã¹ããªã¼ã«è¿½å ãããã®ååãããã®è¦ç´ ãçæããããã«ä½¿ç¨ãããã³ã³ã¹ãã©ã¯ã¿ã¼ã«é¢é£ä»ãã¾ãã
使ãããã¨ãã§ããã®ã¯ã次㮠2 種é¡ã®ã«ã¹ã¿ã è¦ç´ ã§ãã
- èªå¾ã«ã¹ã¿ã è¦ç´ (Autonomous custom element): ç¬ç«ããè¦ç´ ã§ããçµã¿è¾¼ã¿ã® HTML è¦ç´ ãç¶æ¿ãã¾ããã
- ã«ã¹ã¿ã çµã¿è¾¼ã¿è¦ç´ (Customized built-in element): çµã¿è¾¼ã¿ã® HTML è¦ç´ ãç¶æ¿ããæ¡å¼µããè¦ç´ ã§ãã
èªå¾ã«ã¹ã¿ã è¦ç´ ãå®ç¾©ããã«ã¯ãoptions 弿°ãçç¥ããå¿
è¦ãããã¾ãã
ã«ã¹ã¿ã çµã¿è¾¼ã¿è¦ç´ ãå®ç¾©ããã«ã¯ãoptions 弿°ã渡ãããã® extends ããããã£ã«æ¡å¼µå¯¾è±¡ã®çµã¿è¾¼ã¿è¦ç´ ã®ååãè¨å®ããå¿
è¦ãããã¾ããã¾ãããã®ååã¯ãã«ã¹ã¿ã è¦ç´ ã¯ã©ã¹ã®å®ç¾©ãç¶æ¿ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã¨ä¸è´ãã¦ããå¿
è¦ãããã¾ããä¾ãã°ã<p> è¦ç´ ãã«ã¹ã¿ãã¤ãºããã«ã¯ã{extends: "p"} ã define() ã«æ¸¡ãå¿
è¦ãããããã®è¦ç´ ã®ã¯ã©ã¹å®ç¾©ã¯ HTMLParagraphElement ãç¶æ¿ãã¦ããå¿
è¦ãããã¾ãã
æå¹ãªã«ã¹ã¿ã è¦ç´ å
ã«ã¹ã¿ã è¦ç´ ã®ååã¯ã以ä¸ã®æ¡ä»¶ãæºããªããã°ãªãã¾ããã
- ASCII ã®å°æå (a-z) ã§å§ã¾ã
- ãã¤ãã³ãå«ã
- ASCII ã®å¤§æåãå«ã¾ãªã
- ASCII ã®ãã¯ã¤ãã¹ãã¼ã¹ã
NULLã/ã>ï¼ãããã U+0000, U+002F, U+003Eï¼ãå«ã¾ãªã - 次ã®ãããã§ããªã
- "annotation-xml"
- "color-profile"
- "font-face"
- "font-face-src"
- "font-face-uri"
- "font-face-format"
- "font-face-name"
- "missing-glyph"
ä¾
>èªå¾ã«ã¹ã¿ã è¦ç´
次ã®ã¯ã©ã¹ã¯ãæå°éã®èªå¾ã«ã¹ã¿ã è¦ç´ ãå®è£ ãã¾ãã
class MyAutonomousElement extends HTMLElement {
constructor() {
super();
}
}
ãã®è¦ç´ ã¯ä½ããã¾ãããå®éã®èªå¾åè¦ç´ ã§ããã°ããã®æ©è½ã¯ã³ã³ã¹ãã©ã¯ã¿ã¼ããæ¨æºè¦æ ¼ã§æå®ãããã©ã¤ããµã¤ã¯ã«ã³ã¼ã«ããã¯å ã§å®è£ ãããã¯ãã§ãã ã«ã¹ã¿ã è¦ç´ ã®æ±ãæ¹ã«é¢ããã¬ã¤ãã®ã«ã¹ã¿ã è¦ç´ ã®å®è£ ãåç §ãã¦ãã ããã
ãã ãã以ä¸ã®ä¸ã®ã¯ã©ã¹å®ç¾©ã¯ define() ã¡ã½ããã®è¦ä»¶ãæºããã¦ãããããæ¬¡ã®ã³ã¼ãã§å®ç¾©ãããã¨ãã§ãã¾ãã
customElements.define("my-autonomous-element", MyAutonomousElement);
ããã HTML ãã¼ã¸ã§åæ§ã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
<my-autonomous-element>è¦ç´ ã®ã³ã³ãã³ã</my-autonomous-element>
ã«ã¹ã¿ã çµã¿è¾¼ã¿è¦ç´ ã®å®ç¾©
以ä¸ã®ã¯ã©ã¹ã¯ãã«ã¹ã¿ã çµã¿è¾¼ã¿è¦ç´ ãå®è£ ãã¾ãã
class MyCustomizedBuiltInElement extends HTMLParagraphElement {
constructor() {
super();
}
}
ãã®è¦ç´ ã¯ãçµã¿è¾¼ã¿ã® <p> è¦ç´ ãæ¡å¼µãããã®ã§ãã
ãã®æå°éã®ä¾ã§ã¯ããã®è¦ç´ ã¯ã«ã¹ã¿ãã¤ãºãä¸åå®è£
ãã¦ããªããããé常㮠<p> è¦ç´ ã¨ã¾ã£ããåãããã«åä½ãã¾ãã
ãã ããdefine() ã®è¦ä»¶ã¯æºããã¦ãããããæ¬¡ã®ããã«å®ç¾©ãããã¨ãã§ãã¾ãã
customElements.define(
"my-customized-built-in-element",
MyCustomizedBuiltInElement,
{
extends: "p",
},
);
HTML ãã¼ã¸ã§ãããæ¬¡ã®ããã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
<p is="my-customized-built-in-element"></p>
仿§æ¸
| 仿§æ¸ |
|---|
| HTML > # dom-customelementregistry-define-dev > |