2015-01-09 5 views
1

Я читаю this article о пользовательском элементе HTML5.Нужно ли регистрировать пользовательский тег?

Он сказал, что необходимо зарегистрировать имя элемента, прежде чем использовать его любит:

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

Тогда я могу начать использовать его обычно:

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

Но я просто попытался использовать его без регистрации в Chrome , Firefox и IE11. Кажется, все выглядит отлично, даже CSS-селектор для x-foo также работает.

Я предполагаю, что нам больше не нужно регистрироваться, так как большинство браузеров поддерживают его?

Благодаря

+0

Нам необходимо зарегистрировать их, поскольку старые браузеры (например, старые версии IE) не поддерживают его. Возможно, я ошибаюсь. – salep

+0

@salep Но старые браузеры не поддерживают [document.registerElement] (https://developer.mozilla.org/en-US/docs/Web/API/Document/registerElement#Browser_compatibility). – niutech

ответ

5

Короткий ответ: Нет

Как хорошая практика, всегда определяют вещи, которые не являются официальными. Просто потому, что он работает всеми/большинством браузеров, это не делает его правильным. Это будет похоже на использование переменной, которая еще не определена, а затем автоматически определяет ее компилятор. Конечно, это работает, но это не делает правильно

+0

Спасибо за ответ. Также из кода в моем вопросе нам нужно вызвать 'document.body.appendChild()' или просто 'registerElement()' достаточно? – hrsetyono

+1

Неверный элемент body.appendChild. Ваша цель - зарегистрировать его, так что просто зарегистрируйте его. Для некоторых версий IE вам необходимо выполнить 'document.createElement ('x-foo')' или CSS не работает. Также вы должны явно указать свойство css для отображения для пользовательских элементов, потому что некоторые браузеры делают разные предположения. – FakeRainBrigand

0

Нет, и document.registerElement даже не поддерживается широко. Это экспериментальная технология, работа в процессе.

Браузеры традиционно обрабатывают имена неизвестных элементов как определяющие элементы, которые имеют общие свойства элементов HTML, но не имеют функциональности по умолчанию и не выполняют рендеринг по умолчанию (содержимое отображается в соответствии с его собственными правилами). Тем не менее, старые версии IE игнорировать неизвестное имя элемента в CSS если вы не вводить его с кодом, как

<script>document.createElement('x-foo')</script> 

Использование registerElement бесполезно для этих целей, так как он не поддерживается IE.

Если вы используете registerElement, вам следует проявлять осторожность, поскольку вызов вызывает ошибки и завершение сценария во многих браузерах. Таким образом, вам понадобится код, например

+0

Спасибо за разъяснение. Вместо этого я буду использовать 'createElement' – hrsetyono