自定义元素:无法从按钮扩展非法构造函数

问题描述 投票:0回答:1
<my-button 
        id="elem" 
        >
        problem
       </my-button>


       <button>
        works
       </button>

class MyButton extends HTMLButtonElement  {
    constructor(){
        super(); // must call constructor from parent class
    }
}

  customElements.define("my-button", MyButton, { extends: 'button'});

我的问题是:为什么我没有得到像 Button 这样的元素?只是文字

javascript html custom-element
1个回答
0
投票

注意:自定义内置元素在 Apple-Safari 中工作 (而且永远不会)

自定义内置元素符号是带有is=参考的原始元素:

<button is="my-button">

下面的代码适用于 Chrome、Edge、FireFix 和 Opera

<button is="my-button" id="foo">Click Me!</button>
<button is="my-button" id="bar">Click Me!</button>

<script>
customElements.define("my-button", 
  class extends HTMLButtonElement  {
      connectedCallback(){
        console.log("connected", this.id);
        this.onclick = (evt) => {
          console.log("You clicked", this.id);
        }
      }
  }, { extends: 'button'});
 </script>

创建元素符号:

let myButton = document.createElement("button", { is: "my-button" });

© www.soinside.com 2019 - 2024. All rights reserved.