Html 我应该手动向DOM注册自定义淘汰元素吗?

Html 我应该手动向DOM注册自定义淘汰元素吗?,html,dom,knockout.js,custom-element,Html,Dom,Knockout.js,Custom Element,在淘汰赛中,我们可以创建如下内容: <flight-deals params='from: "lhr", to: "sfo"'></flight-deals> HTML中自定义元素的定义仍然是,并且的一部分过程是使用document.registerement将自定义元素注册到DOM 但是,我在敲除文档中找不到关于这些方面的任何内容,当我在调用ko.components.register之后通过敲除来调查我的应用程序是否可以访问DOM时,结果证明它们不是 所以,如果

在淘汰赛中,我们可以创建如下内容:

<flight-deals params='from: "lhr", to: "sfo"'></flight-deals>

HTML中自定义元素的定义仍然是,并且的一部分过程是使用
document.registerement
将自定义元素注册到DOM

但是,我在敲除文档中找不到关于这些方面的任何内容,当我在调用
ko.components.register
之后通过敲除来调查我的应用程序是否可以访问DOM时,结果证明它们不是


所以,如果我在knockout中使用自定义元素,我是否也应该确保使用
document.registerement
手动注册这些元素?knockout还没有做到这一点,这让我有点困惑。

对于现代浏览器和IE9+,您不需要做任何特殊的事情

对于IE6-IE8支持,您需要意识到这一点,并使用一些小技巧。如前所述:

  • HTML5时代的浏览器,包括InternetExplorer9和更高版本,自动允许自定义元素,没有任何困难
  • Internet Explorer 6到8也支持自定义元素,但前提是它们是在HTML解析器遇到任何这些元素之前注册的
IE 6-8的HTML解析器将丢弃任何无法识别的元素。为确保它不会抛出自定义元素,必须执行以下操作之一:

  • 确保在HTML解析器看到任何
    元素之前调用
    ko.components.register('your-component')
  • 或者,在HTML解析器看到任何
    元素之前,至少调用
    document.createElement('your-component')
    。您可以忽略createElement调用的结果——重要的是您已经调用了它

我认为(但不是100%确定,因此是评论而不是回答)剔除自定义元素不应该被认为是HTML/w3自定义元素。事实上,他说:“自定义元素是组件绑定的一种语法替代方案(事实上,自定义元素在幕后使用组件绑定)。@JamesThorpe但是,这些标记按原样插入到DOM中。这不是迫使我们将这些元素视为真正的html自定义元素,而不管敲除如何处理它们吗?我不确定。由于w3规范仍在进行中,我在现阶段没有对其进行太多研究。考虑到淘汰赛在没有注册的情况下有效,似乎在这一点上,他们不需要注册。我不知道引擎盖下到底发生了什么。我也会等待技术上的回答!看一下,它说:“HtmlUnknowneElement接口必须用于本规范(或其他适用规范)未定义的HTML元素。”我认为,在源代码中使用您喜欢的任何元素都是完全有效的,它只会将它们视为“未知元素”。我想w3自定义元素规范正在做,这样你就可以用某种方式将那些未知元素转换成“已知元素”。哈哈。。。真不敢相信我之前看的时候竟然没有向下滚动那一页!在我过去的经验中,KO非常擅长支持遗留IE版本(restecpa!)。不过,我很高兴我目前只能支持IE10+>:D。是的,当我们将它引入我们的主要产品时,我们仍然必须在IE的兼容模式下运行,knockout没有跳过beatOh,我错过了片段的最后一部分,他们实际上引用了document.createElement,从而表明他们知道这些东西。问题得到了回答,但如果您想知道是否存在这样的情况,即使在现代浏览器中,注册自定义元素也会相关。或者注册仅仅是为了防止旧浏览器丢弃未知元素?@Alex只针对旧浏览器AFAIK。