javascript - 如何使用 Web 组件创建自定义元素?

标签 javascript html web-component custom-element

我正在尝试创建自定义元素...

我的第一个选择:

JS:enter image description here

class AwesomeButtonComponent extends HTMLButtonElement {
    constructor() {
        super();

        this.addEventListener('click', () => {
            alert('Great job!');
        });
    }
}

customElements.define('awesome-button', AwesomeButtonComponent, {extends: 'button'});

HTML: <awesome-button>CLICK ME</awesome-button>

<小时/> 我的第二个选择:

JS:

customElements.define('awesome-button', Object.create(HTMLButtonElement.prototype), {
       extends: 'button'
    });

HTML: <awesome-button>CLICK ME</awesome-button>

2019年7月8日<button is="awesome-button">CLICK ME</button>

Each my attempt turns out a simple element. How to correct create custom element, which extended from native?

enter image description here

js、vue、html5

最佳答案

要使用自定义的内置元素,您必须以不同的方式引用它们(通过使用 is 属性)see here

class AwesomeButtonComponent extends HTMLButtonElement {
    constructor() {
        super();

        this.addEventListener('click', () => {
            alert('Great job!');
        });
    }
}

customElements.define('awesome-button', AwesomeButtonComponent, {extends: 'button'});
<!doctype html>
<html>
  <head>
    <title>Custom element</title>
  </head>
  <body>
    <button is="awesome-button">CLICK ME</button>
  </body>
</html>

请注意,并非所有浏览器(截至 2019-07-08)都支持 "Customized built-in elements"还没有

关于javascript - 如何使用 Web 组件创建自定义元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905396/

相关文章:

javascript - 如何在此 Accordion 中打开默认选项卡并在打开另一个选项卡时关闭该选项卡?

html - 主体高度未填充 100% 页面高度

html - 使用 CSS 设置 block 元素的真实(偏移)宽度/高度?

html - 是否可以让边框的一部分改变颜色而其余部分保持相同颜色?

javascript - 将 CodeMirror 添加到自定义元素的 Shadow Dom 中?

vue.js - 为什么我的对象和数组 Prop 变成子组件中的字符串?

angular - Angular2 中自定义指令的 NgControl

javascript - 根据用户输入创建表单字段

javascript - 使用类名选择器识别元素,但使用此关键字时不识别元素

javascript - js文件引用末尾的大括号是什么意思?