我们需要注册自定义标签吗?

时间:2015-01-09 02:40:50

标签: html css html5

我一直在阅读有关HTML5自定义元素的this article

它说我需要在使用之前注册元素的名称,如:

var XFoo = document.registerElement('x-foo');
document.body.appendChild(new XFoo());

然后我可以开始正常使用它:

<x-foo>...</x-foo>

但我只是尝试使用它而无需在Chrome,Firefox和IE11中注册。所有似乎都渲染得很好,即使x-foo的CSS选择器也可以。

我猜我们不再需要注册,因为大多数浏览器都支持它?

由于

2 个答案:

答案 0 :(得分:5)

简短回答:不。

作为一种好的做法,总是定义非官方的东西。仅仅因为它适用于所有/大多数浏览器并不能使其正确。这类似于使用尚未定义的变量,然后编译器自动定义它。当然,它有效,但这不是正确的

答案 1 :(得分:0)

不,document.registerElement甚至得不到广泛支持。它是实验技术,正在进行中。

浏览器传统上将未知元素名称视为指定具有HTML元素的通用属性但没有默认功能且没有默认呈现(内容根据其自己的规则呈现)的元素。但是,旧版本的IE会忽略CSS中的未知元素名称,除非您使用

之类的代码引入它
<script>document.createElement('x-foo')</script>

使用registerElement对于此类目的无用,因为IE不支持它。

如果你使用registerElement,你应该小心,因为在许多浏览器中调用它会导致错误和脚本终止。所以你需要像

这样的代码
if('registerElement' in document) {
   var XFoo = document.registerElement('x-foo');
   ...
}