我一直在阅读有关HTML5自定义元素的this article。
它说我需要在使用之前注册元素的名称,如:
var XFoo = document.registerElement('x-foo');
document.body.appendChild(new XFoo());
然后我可以开始正常使用它:
<x-foo>...</x-foo>
但我只是尝试使用它而无需在Chrome,Firefox和IE11中注册。所有似乎都渲染得很好,即使x-foo
的CSS选择器也可以。
我猜我们不再需要注册,因为大多数浏览器都支持它?
由于
答案 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');
...
}