is属性有什么用_HTML is自定义内置元素实例化探索

星明姑娘_8226

星明姑娘_8226

2026-05-31

838人浏览

原创

is属性是唯一合法方式,用于将原生HTML标签(如)升级为定制化内置元素;不支持等非法用法,且必须配合customElements.define()中{ extends: "canvas" }选项及正确构造函数调用。

is属性有什么用_html is自定义内置元素实例化探索

is 属性是让浏览器把一个原生 HTML 标签“升级”为定制化内置元素(Customized Built-in Element)的唯一合法方式。它不是可选修饰,而是强制入口——没它,customElements.define() 注册的扩展类就完全不会生效。

为什么 能用,而 不行

浏览器解析 HTML 时,只认标准标签名。你写 ,哪怕已注册 class MyRenderer extends HTMLCanvasElement,DOM 中生成的仍是 HTMLUnknownElement 实例——width、getContext() 全部 undefined。

is 属性的作用是显式声明:“这个 不是普通 canvas,它该走我注册的 MyRenderer 类逻辑”。只有这样,实例才真正继承 HTMLCanvasElement 原型链。

  • 注册必须带 { extends: "canvas" },否则 is 无效
  • is 的值(如 "my-renderer")必须与 customElements.define() 第一个参数完全一致(大小写敏感)
  • data-is、data-custom 等自定义属性毫无作用,浏览器不识别

is 只能配合特定原生标签使用

不是所有标签都支持 is。目前规范明确允许的只有: 、、、、、、、、、、、

、、
、、

Wechat Article Html
Wechat Article Html

将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。

下载
、
    、
      、
    • 、
      、
      等有限集合。

      比如你想扩展 HTMLDivElement,但

      是非法的——div 不在规范允许列表中。此时只能退回到自主自定义元素(),自己实现全部行为。
      • Chrome、Firefox、Safari 当前均遵循该限制,无例外
      • 试图对不支持的标签加 is,浏览器会静默忽略,不报错也不升级
      • MDN 文档中 “HTML elements that support the is attribute” 列表需定期核对,新增支持极慢

      构造函数里 super() 必须调用,且不能晚于任何 DOM 访问

      继承内置元素类(如 HTMLButtonElement)时,constructor() 中第一件事必须是 super()。它负责初始化底层 DOM 对象状态,比如 button.type、input.value 的初始值绑定。

      如果漏掉或延迟调用,会出现看似奇怪的问题:元素渲染正常,但 this.value 读不到初始值、this.width 始终为 0、getAttribute("value") 返回字符串而 this.value 是空字符串。

      • super() 必须在访问任何原生属性/方法前执行
      • 不能在 connectedCallback() 里补调 super() —— 此时实例已创建完毕,再调无效
      • 若需异步初始化(如加载配置),应放在 connectedCallback() 或 attributeChangedCallback() 中

      容易被忽略的兼容性与调试盲区

      即使代码全对,is 行为在不同场景下仍可能失效:

      • 服务端渲染(SSR)或静态 HTML 中写 ,但 JS 尚未执行注册,元素仍是普通 HTMLCanvasElement;需确保 customElements.define() 在 DOM 解析前完成
      • Shadow DOM 内部使用 is 无问题,但若通过 innerHTML 动态插入含 is 的字符串,浏览器不会自动升级——必须用 document.createElement("canvas", { is: "my-renderer" })
      • DevTools 里看元素类型时,显示的是 HTMLCanvasElement,而非自定义类名;要确认是否升级成功,得查 element.constructor.name 是否等于你的类名

    • 前端入门到VUE实战笔记:立即使用
      在学习笔记中,你将探索 前端 的入门与实战技巧!

      相关专题

      更多
      html版权符号
      html版权符号

      html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

      2023.06.14

      6735

      7

      html在线编辑器
      html在线编辑器

      html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

      2023.06.21

      3732

      4

      html网页制作
      html网页制作

      html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

      2023.07.31

      3410

      5

      html空格
      html空格

      html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

      2023.08.01

      3419

      5

      html是什么
      html是什么

      HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

      2023.08.11

      5059

      6

      html字体大小怎么设置
      html字体大小怎么设置

      在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

      2023.08.11

      3361

      3

      html转txt
      html转txt

      html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

      2023.08.31

      3169

      3

      html文本框代码怎么写
      html文本框代码怎么写

      html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

      2023.09.01

      2768

      6

      HTML嵌入CSS样式的方法
      HTML嵌入CSS样式的方法

      HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

      2023.09.20

      2888

      5

      热门下载

      更多
      网站特效
      /
      网站源码
      /
      网站素材
      /
      前端模板

      精品课程

      更多
      相关推荐
      /
      热门推荐
      /
      最新课程
      GDB 17.2 官方文档集合
      GDB 17.2 官方文档集合

      共0课时 | 0人学习

      Bootstrap 入门安装配置
      Bootstrap 入门安装配置

      共0课时 | 0人学习

      38+ PhpStorm 提示和技巧
      38+ PhpStorm 提示和技巧

      共1课时 | 228人学习