Baseline Widely available *
define()
㯠CustomElementRegistry
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã§ãæ°ããã«ã¹ã¿ã è¦ç´ ãå®ç¾©ãã¾ãã
使ãããã¨ãã§ããã®ã¯ã次㮠2 種é¡ã®ã«ã¹ã¿ã è¦ç´ ã§ãã
customElements.define(name, constructor, options);
弿°
æ°ããã«ã¹ã¿ã è¦ç´ ã®ååã§ããã«ã¹ã¿ã è¦ç´ ã®ååã¯ãå°ãªãã¨ã 1 ã¤ã®ãã¤ãã³ãå«ã¾ãªããã°ãªããªããã¨ã«æ³¨æãã¦ãã ããã
æ°ããã«ã¹ã¿ã è¦ç´ ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã
è¦ç´ ã®å®ç¾©ã®ä»æ¹ãå¶å¾¡ãããªãã¸ã§ã¯ããç¾å¨ã¯ã次㮠1 ã¤ã®ãªãã·ã§ã³ã®ã¿ã«å¯¾å¿ãã¦ãã¾ãã
extends
: æ¡å¼µããçµã¿è¾¼ã¿è¦ç´ ã®ååã示ãæååãã«ã¹ã¿ã çµã¿è¾¼ã¿è¦ç´ ã使ããã®ã«ä½¿ãããããªãã
ä¾å¤NotSupportedError
DOMException
CustomElementRegistry
ã«æ¢ã«åãååã®é
ç®ã¾ãã¯åãã³ã³ã¹ãã©ã¯ã¿ã¼ãå«ã¾ãã¦ããï¼ã¾ãã¯æ¢ã«å®ç¾©ããã¦ããï¼ãã¾ã㯠extends
ã§æå¹ãªã«ã¹ã¿ã è¦ç´ åãæå®ããã¦ããå ´åãã¾ã㯠extends
ã§æªç¥ã®è¦ç´ ãæ¡å¼µãããã¨ããå ´åã«çºçãã¾ãã
SyntaxError
DOMException
æå®ãããååãæå¹ãªã«ã¹ã¿ã è¦ç´ åã§ã¯ãªãã£ãå ´åã«çºçãã¾ãã
TypeError
DOMException
åç §ãããã³ã³ã¹ãã©ã¯ã¿ã¼ãã³ã³ã¹ãã©ã¯ã¿ã¼ã§ã¯ãªãã£ãå ´åã«çºçãã¾ãã
ã¡ã¢: NotSupportedError
ä¾å¤ãå¤ãçºçããå ´åã define()
ã失æãã¦ããããã«æããããããã¾ããããå¤ãã®å ´å㯠Element.attachShadow()
ã«åé¡ãããã¾ãã
以ä¸ã®ã³ã¼ã㯠popup-info-box-web-component ã®ä¾ããåã£ããã®ã§ã (ã©ã¤ãã§ãã覧ãã ãã)ã
// è¦ç´ ã®ã¯ã©ã¹ã使
class PopUpInfo extends HTMLElement {
constructor() {
// ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ã¯å¸¸ã« super ãæåã«å¼ã³åºã
super();
// ã·ã£ãã¦ã«ã¼ããçæ
var shadow = this.attachShadow({ mode: "open" });
// span ãçæ
var wrapper = document.createElement("span");
wrapper.setAttribute("class", "wrapper");
var icon = document.createElement("span");
icon.setAttribute("class", "icon");
icon.setAttribute("tabindex", 0);
var info = document.createElement("span");
info.setAttribute("class", "info");
// 屿§ã®ä¸èº«ãåãåºãã info ã® span ã®ä¸ã«å
¥ãã
var text = this.getAttribute("text");
info.textContent = text;
// ã¢ã¤ã³ã³ãæ¿å
¥
var imgUrl;
if (this.hasAttribute("img")) {
imgUrl = this.getAttribute("img");
} else {
imgUrl = "img/default.png";
}
var img = document.createElement("img");
img.src = imgUrl;
icon.appendChild(img);
// ããããã® CSS ãçæãã¦ã·ã£ã㦠DOM ã«é©ç¨
var style = document.createElement("style");
style.textContent =
".wrapper {" +
"position: relative;" +
"}" +
".info {" +
"font-size: 0.8rem;" +
"width: 200px;" +
"display: inline-block;" +
"border: 1px solid black;" +
"padding: 10px;" +
"background: white;" +
"border-radius: 10px;" +
"opacity: 0;" +
"transition: 0.6s all;" +
"position: absolute;" +
"bottom: 20px;" +
"left: 10px;" +
"z-index: 3;" +
"}" +
"img {" +
"width: 1.2rem" +
"}" +
".icon:hover + .info, .icon:focus + .info {" +
"opacity: 1;" +
"}";
// çæãããè¦ç´ ãã·ã£ã㦠DOM ã«åãä»ãã
shadow.appendChild(style);
shadow.appendChild(wrapper);
wrapper.appendChild(icon);
wrapper.appendChild(info);
}
}
// æ°ããè¦ç´ ãå®ç¾©
customElements.define("popup-info", PopUpInfo);
<popup-info
img="img/alt.png"
text="Your card validation code (CVC) is an extra
security feature â it is the last 3 or 4
numbers on the back of your card."></popup-info>
ã¡ã¢: èªå¾ã«ã¹ã¿ã è¦ç´ ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ HTMLElement
ãç¶æ¿ãã¦ããªããã°ãªãã¾ããã
以ä¸ã®ã³ã¼ã㯠word-count-web-component ã®ä¾ããåã£ããã®ã§ã (ã©ã¤ãã§ãã覧ãã ãã)ã
// è¦ç´ ã®ã¯ã©ã¹ã使
class WordCount extends HTMLParagraphElement {
constructor() {
// ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ã¯å¸¸ã« super ãæåã«å¼ã³åºã
super();
// è¦ç´ ã®è¦ªè¦ç´ ã®èªæ°ãæ°ãã
var wcParent = this.parentNode;
function countWords(node) {
var text = node.innerText || node.textContent;
return text.split(/\s+/g).length;
}
var count = "èªæ°: " + countWords(wcParent);
// ã·ã£ãã¦ã«ã¼ããçæ
var shadow = this.attachShadow({ mode: "open" });
// ããã¹ããã¼ããçæããèªæ°ã追å
var text = document.createElement("span");
text.textContent = count;
// ã·ã£ãã¦ã«ã¼ãã«è¿½å
shadow.appendChild(text);
// è¦ç´ ã®å
容ãå¤åããéã«èªæ°ãæ´æ°
setInterval(function () {
var count = "èªæ°: " + countWords(wcParent);
text.textContent = count;
}, 200);
}
}
// æ°ããè¦ç´ ãå®ç¾©
customElements.define("word-count", WordCount, { extends: "p" });
ã·ã£ãã¦ã«ã¼ããåãä»ããããªãããã«ããè¦ç´ ã®ä½æ
è¦ç´ ã«ä½¿ç¨ããã¦ããã¯ã©ã¹ããæåå `shadow` ãè¿ãéçãããã㣠disabledFeatures
ãå«ãã§ããå ´åã Element.attachShadow()
㯠DOMException
ã® NotSupportedError
ãè¿ãããã«ãªãã¾ãã
class PopUpInfo extends HTMLElement {
static get disabledFeatures() {
return ["shadow"];
}
constructor() {
super();
var shadow = this.attachShadow({ mode: "open" });
// ããã¯è¦ç´ ãå®ç¾©ãããã¨ãã«ã¨ã©ã¼ãçºçããããã«ãªãã¾ãã
}
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4