【问题标题】:Extending `<header>` , `<main>`, `<footer>` and `<aside>` tags扩展`<header>`、`<main>`、`<footer>`和`<aside>`标签
【发布时间】:2021-08-31 00:21:06
【问题描述】:

扩展&lt;header&gt;&lt;main&gt;&lt;footer&gt;&lt;aside&gt; 标签的正确类是什么。没有HTMLHeaderElementHTMLMainElementHTMLFooterElementHTMLAsideElement

那么获得行为的正确方法是什么

class CustomHeader extends what? <!-- HTMLElement --> {
  constructor() {
    super()
  }
}
class CustomMain extends what? <!-- HTMLElement --> {
  constructor() {
    super()
  }
}
class CustomFooter extends what? <!-- HTMLElement --> {
  constructor() {
    super()
  }
}
class CustomAside extends what? <!-- HTMLElement --> {
  constructor() {
    super()
  }
}
customElements.define('custom-header', CustomHeader, { extends: 'header' })
customElements.define('custom-main', CustomMain, { extends: 'main' })
customElements.define('custom-footer', CustomFooter, { extends: 'footer' })
customElements.define('custom-aside', CustomAside, { extends: 'aside' })
<header is="custom-header"></header>
<main is="custom-main"></main>
<footer is="custom-footer"></footer>
<aside is="custom-aside"></aside>

【问题讨论】:

  • 无框架,尝试使用支持的浏览器 API developer.mozilla.org/en-US/docs/Web/HTML/…找到最简单的原生方式@
  • 我很抱歉。我应该做更好的研究。这不是我以前听说过的功能,所以我得出了结论。对此感到抱歉。
  • 这能回答你的问题吗? Extending an HTML Element
  • “截至 2017 年 11 月 28 日,任何浏览器均不支持扩展除 HTMLElement 之外的任何内容”,“截至 2018 年 5 月 28 日,Chrome 67 支持自定义内置元素,并且 Firefox 63 也声称完全支持。”所以不行!我们在 2021 年

标签: html


【解决方案1】:

目前没有headermainaside 等的全局接口。元素,所以看起来你现在正在做的事情是正确的。虽然,大多数浏览器会强制此实例遵守规范中针对您将 HTMLElement 对象绑定到的元素的指南(即允许的 aria 规则)。如果您确实想查看是否有更好的类可用,可以查看 MDN 的 DOM Interface 列中的元素列表。

Element Name DOM Interface
header HTMLElement
main HTMLElement
aside HTMLElement

【讨论】:

  • 所以如果我将aria-label 设置为extended HTMLElement,它会按预期工作吗?
猜你喜欢
  • 2011-08-31
  • 2011-07-26
  • 2012-09-13
  • 1970-01-01
  • 2011-04-17
  • 2018-05-21
  • 2015-12-04
  • 1970-01-01
  • 2012-04-27
相关资源
最近更新 更多