如何创建自定义元素扩展类的新实例

2024-03-28

我正在尝试以下示例谷歌开发者网站 https://developers.google.com/web/fundamentals/getting-started/primers/customelements#extendhtml我收到错误:“TypeError:非法构造函数。 出了什么问题以及如何解决?

class FancyButton extends HTMLButtonElement {
  constructor() {
    super(); // always call super() first in the ctor.
    this.addEventListener('click', e => this.drawRipple(e.offsetX,e.offsetY));
  }

  // Material design ripple animation.
  drawRipple(x, y) {
    let div = document.createElement('div');
    div.classList.add('ripple');
    this.appendChild(div);
    //    div.style.top = `${y - div.clientHeight/2}px`;
    //    div.style.left = `${x - div.clientWidth/2}px`;
    div.style.backgroundColor = 'currentColor';
    div.classList.add('run');
    div.addEventListener('transitionend', e => div.remove());
  }
}

customElements.define('fancy-button', FancyButton, {extends: 'button'});
let button = new FancyButton();
button.textContent = 'Fancy button!';
button.disabled = true;

Blink,当前实现自定义元素 v1 的 Web 引擎(在铬 v53+ https://stackoverflow.com/a/38725765/4600982例如)仅支持自主定制元素 https://html.spec.whatwg.org/multipage/scripting.html#custom-elements-autonomous-example: 看开闪烁错误 https://bugs.chromium.org/p/chromium/issues/detail?id=648828.

如果你想定义定制的内置元素 https://html.spec.whatwg.org/multipage/scripting.html#custom-elements-customized-builtin-example (i.e. <button>扩展),你需要使用像这样的polyfill来自 Web Reflection 的一个 https://github.com/WebReflection/document-register-element.

或者,您仍然可以使用自定义元素 v0 语法(document.registerElement).


更新#3

自 2018 年 10 月起,它们原生支持 Chrome 67+ 和 Firefox 63+ :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建自定义元素扩展类的新实例 的相关文章

  • 通过搜索查找下一个文本并突出显示不起作用

    当在搜索框中搜索任何文本时 它可以找到并突出显示正确的文本 但是当搜索下一个 新文本时 它无法找到下一个 新文本 再次搜索时它不起作用 我无法找到问题 这JS below JS button search click function va
  • 标点符号加载“动画”,javascript?

    我正在寻找一种好方法来显示一些标点符号加载 动画 我想要的是这样的 This will display at second 1 Waiting for your input This will display at second 2 Wai
  • 使用什么事件来在选择文本框中的值时显示警报消息

    我正在使用 jquery 的自动完成 api 来从数据库中获取名称 但是我想在从显示的文本框中选择名称时显示一条警报消息 我将显示一个图像以便更好地理解 当我输入 S 时 它将显示所有包含 S 的记录 所以问题是 如果我选择例如 Spars
  • 如何在 jQuery 中使用 CSS“background-image”属性添加的图像上绑定单击事件

    这是我的小提琴link http jsbin com otisur 1 edit 我想我的问题通过标题本身就很清楚了 尽管如此 我正在寻找一种绑定的方法click使用 css 添加的图像上的事件background image财产 我知道
  • 如何在缩放动画中保持原点位于图像中心?

    我有类似的情况fiddle https jsfiddle net ddvn3p1h 3 其中我有一个 CSS3 动画 可以缩放绝对定位在另一个元素中心的元素 但是 当动画发生时 它会偏离中心 如示例中相对于蓝色的红色方块所示 我如何将其居中
  • jquery:如何检查div中的所有单选按钮是否被选中

    我的 html 看起来像这样 div div
  • 如何按单个整数字段对 JSON 进行排序? [复制]

    这个问题在这里已经有答案了 我有以下 JSON title title order 0 order 9 order 2 JSON 包含很多字段 我如何根据字段对它们进行排序order field 我一直在寻找 Nodejs 中内置的东西 但
  • 3 Div 盒子不适合容器

    在页面上 jerkydirect com base opportunity 容器内有 3 个带有图片的盒子 然而 当在大屏幕上查看时 最后一个框粘在右侧 它在较小的窗口或移动设备上看起来很棒 但在较大的屏幕上则不然 我怎样才能让它正确对齐
  • 如何在WebBrowser控件中注入Javascript?

    我试过这个 string newScript textBox1 Text HtmlElement head browserCtrl Document GetElementsByTagName head 0 HtmlElement scrip
  • 从 url 角度加载模板并在 div 内编译

    由于我是 Angular JS 的新手 我想知道如何加载外部模板并将其与一些数据一起编译到目标中div 例如我有这个模板
  • 以编程方式触发 highchart 散点图上某个点的单击事件

    实际上 我有一个小要求 其中有一个带有点列表和下拉列表的散点图 当我从下拉列表中选择一个项目时 应触发其相应的数据点单击 当我在图表上选择一个数据点时 必须执行一些操作 并且下拉列表应根据选择进行更新 我们有什么办法可以做到这一点吗 我尝试
  • 测量填写部分的时间 - 谷歌表单

    我正在尝试使用谷歌表单进行研究调查问卷 对于某些部分 我想自动测量用户填写所需的时间 谷歌表单中没有这样的选项 我尝试复制表单源 并用 javascript 填充时间 但它不起作用 跨源问题 未能成功托管复制的表单 如何做到 我如何衡量回答
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • javascript onclick 进入新窗口

    这是我的代码
  • iframe 位置居中

    所以我找到了这段用于将内容放在中心的代码 但我的问题是它是为容器制作的 你知道如何为 iframe 制作它吗 或者你知道另一个代码吗 代码 center margin auto width 60 border 3px solid 73AD2
  • 通过ajax执行后期操作时如何克服CORS重定向问题?

    我可以通过外部登录表单中的 post 方法类型提交表单来登录 roundcube 实例 托管在另一台服务器上 我收到此错误 通过 ajax 签名时 XMLHttpRequest 无法加载https 192 168 0 7 mail http
  • 如何在 JSP 编辑器中激活 javascript 的语法着色 - Eclipse

    在某些情况下 javascript 确实必须位于 JSP 页面中 而不是位于单独的文件中 有些框架还使用Javascript做一些事情 以便用户将其包含到JSP标签中 这样JS就不会出现在
  • 右列固定的 Div 表

    我最近接手了一个非营利网站作为一个项目 我正在使用一个现有的网站 所以我必须使用很多已经编程的东西 所以我所要做的就是创建设计 I made a diagram of basically what I can t figure out ho
  • 如何用时刻找到与给定时间最接近的时间?

    所以我有一个简单的代码 一个工作代码 它使用 moment 获取最接近给定时间的时间 Current time in millis const now moment 10 16 HH mm format x List of times co
  • 开玩笑 setTimeout 不暂停测试

    it has working hooks async gt setTimeout gt console log Why don t I run expect true toBe true 15000 我已经查看了这个答案 Jest 文档和几

随机推荐

  • 使用可传输对象调用 postMessage 时,MessageChannel port.postMessage 的数据为空?

    我正在学习关于消息通道 http dev opera com articles view window postmessage messagechannel channel and 可转让物品 https developer mozilla
  • HABTM 连接表上需要两个索引吗?

    一个简单的has and belongs to many协会 Person has and belongs to many products Product has and belongs to many persons Are both以
  • MySQL:如果外键存在则插入

    我有一个包含大约 2000 行的 Excel 工作表 我想将其插入到数据库中 问题是我想要插入 2 000 行的表有一列引用了另一个表中的外键 不幸的是 许多查询失败 因为提供的外键值不存在 我知道我可以忽略外键检查 但这不是我想要的 我不
  • 在地图上绘制坐标

    我正在尝试使用 R 绘制我的坐标 我已经尝试遵循不同的帖子 R 在世界地图上绘制分组坐标 https stackoverflow com questions 16234092 r plot grouped coordinates on wo
  • 我可以在 Rust 中定义一个带有自身类型参数的特征吗?

    我是 Rust 新手 在处理特征和泛型方面遇到困难 我首先定义一个特征来为我做一些工作 然后定义一个将其用作类型参数的通用结构 现在我意识到 在原始特征中 我实际上想使用我定义的结构 所以我处于一种循环中 我不知道如何摆脱它 并且想知道我想
  • ssh -vT [电子邮件受保护] 的权限被拒绝(公钥)错误

    安装了 Git 并创建了与 Facebook 应用程序一起使用的 heroku 帐户 无法与github建立连接 使用windows Git命令提示符将文件克隆到本地windows 7 输出如下 ssh vT email protected
  • Windows 7 操作中心

    如果有人可以指导我修改 控制 Windows 7 操作中心所需的新 MS API 我将不胜感激 我需要做的是将备份通知消息集成到我的应用程序中 该应用程序是操作中心的备份应用程序 换句话说 我希望Windows在第三方软件完成备份操作后显示
  • 使用 jQuery 从 'a' 元素的 'href' 属性中剪切文件名的最佳方法是什么?

    例如我有简单的代码 ul class list li a href http www aaa com bbb ccc file01 pdf Download file 01 a li li a href http www bbb com c
  • 我可以删除弹出视图中的箭头吗?

    我被要求删除弹出视图的箭头 这是否违反了人机界面准则 在另一个弹出窗口中显示一个弹出窗口是否明智 如果不违反人机界面准则怎么办 对于斯威夫特 popoverMenuViewController permittedArrowDirection
  • 在 vscode 中将现有 Java 项目转换为 Maven

    我有一个没有任何东西的旧Java项目 我想使用maven 因为缺少一些依赖项并且我找不到库 有人可以告诉我如何将该项目转换为 MavenWITH VSCODE 以下是一些步骤 告诉 VS Code使用Maven https code vis
  • 如何获取最顶层活动的标识符?

    我有一个服务 当最顶层的 Activity 发生变化时 它的行为必须改变 假设 活动 A 处于活动状态 然后服务开始某种处理 当 Activity A 不再可见时 此处理必须停止 用户按下 后退 主页 或执行任何其他操作使 Activity
  • MySQL 记录 UPDATE 应该会失败,但实际上却没有。为什么?

    这是一个有趣的情况 我用 MySQL 开始一个事务 我的交易涉及3个相关查询 每个查询都必须成功 如果没有成功 则不应将任何查询写入数据库 现在 故意 对于第二个查询 这恰好是一个更新查询 我改变了 标识要更新为无效 不存在 PK 值的记录
  • 在散点图中将值绘制为符号的最简单方法?

    在回答我之前关于修复 4D 数据散点图像的色彩空间的问题时 Tom10 建议将值绘制为符号 以便仔细检查我的数据 一个好主意 我过去运行过一些类似的演示 但我一生都找不到我记得的演示非常简单 那么 将数值绘制为散点图中的符号 而不是 o 的
  • IPv6 地址的正则表达式

    我有一个 IPv6 地址的正则表达式 如下所示 IPV4ADDRESS t digit 1 3 3 digit 1 3 t x4 xdigit 1 4 xseq x4 x4 0 7 xpart xseq xseq xseq xseq IPV
  • Scala sbt:sbt 中的多个依赖项

    我是 Scala 的新用户 正在按照创建 scala sbt 项目的方式进行操作 https www youtube com watch v Ok7gYD1VbNw https www youtube com watch v Ok7gYD1
  • 如何在shell中剪切字符串的第一列(可变长度)

    如何在shell中剪切字符串的第一列 可变长度 字符串的前 23006 帮助 txt 我需要 23006 作为输出 很多方法 cut d f1
  • 为什么我的 WebClient 大多数时候会返回 404 错误,但并非总是如此?

    我想要获取有关我的程序中的 Microsoft 更新的信息 但是 服务器在大约 80 的情况下会返回 404 错误 我将有问题的代码归结为这个控制台应用程序 using System using System Net namespace W
  • 实施 Dijkstra 算法

    我的任务是 大学课程 实施某种形式的寻路 现在 在规范中 我可以实现强力 因为要搜索的节点数量有限制 开始 中间两个 结束 但我想重新使用此代码并来实现迪杰斯特拉算法 http en wikipedia org wiki Dijkstra
  • 如何防止android服务被杀死(带通知的服务)

    我正在开发一个需要不断显示通知的应用程序 我有一项服务可以每秒显示一次通知 当资源不足时 android 就会终止我的服务 我已经从 onStartCommand 给出了返回 START STICKY 因此 一段时间后 服务将重新启动 但与
  • 如何创建自定义元素扩展类的新实例

    我正在尝试以下示例谷歌开发者网站 https developers google com web fundamentals getting started primers customelements extendhtml我收到错误 Typ