javascript - 如果从 <ul> 或 <ol> 扩展, 'extends' 选项是否允许我直接将 <li> 元素添加到自定义元素?

标签 javascript html custom-element

我有一个自定义元素,<my-element> .它的目的是像<ol>一样行事。元素。我正在使用以下方法实例化它:

class MyElement extends HTMLElement { ... }
window.customElements.define('my-element', MyElement, { extends: 'ol' });

我生成的 HTML 如下所示:

<my-element>
  <li>...</li>
  <li>...</li>
  <li>...</li>
</my-element>

自然地,这会导致基本的 HTML 验证失败:

Error: Element li not allowed as child of element my-element in this context. (Suppressing further errors from this subtree.)

Contexts in which element li may be used:

  • Inside ol elements.
  • Inside ul elements.

但是验证器不知道我是从 <ol> 扩展的元素开始。是否存在 extends: 'ol'请允许我添加 <li>元素直接添加到我的组件中,还是我仍然需要提供 <ol>包装器?


注意:这个问题与put a `<custom-tag>` instead of a `<ul>` or `<ol>` to create a list非常相似, 但没有提到 extends定义新的自定义元素时的选项。出于这个原因,我认为创建一个新问题而不是潜在地破坏那个问题的含义是合适的。

最佳答案

根据规范,自定义元素最终将能够扩展其他元素。但现在不是时候。

https://developers.google.com/web/fundamentals/web-components/customelements#extend

Warning: At time of writing, no browser has implemented customized built-in elements (status).

但这并不妨碍您的自定义元素表现得像另一个元素。

只需查看所有必需的 ARIA 属性以及您需要的 CSS,然后去做。

关于javascript - 如果从 <ul> 或 <ol> 扩展, 'extends' 选项是否允许我直接将 <li> 元素添加到自定义元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49750442/

相关文章:

php - 如何注释jquery中包含一行php代码的jquery代码块

Javascript 打印变量

javascript - Rails 4.2 - 链接以在 302 中使用 Javascript 结果创建操作

html - 如何根据父 div 是否显示 :none 创建 CSS 规则

javascript - 如何在 React 中使用由 Stenciljs 创建的嵌套 Web 组件

javascript - document.registerElement - 为什么我们需要同时指定 'prototype' 和 'extends' ?

javascript - 如何观察 vanilla JS ES6 自定义元素中计算的 css 属性的变化

javascript - 如何将辅助方法的输出用作 haml 哈希中的值?

javascript - gulp-ignore 与 gulp-jshint

html - 链接到远程机器上的 css 文件