Могут ли атрибуты настраиваемых элементов быть CamelCased?

У меня есть собственный элемент с атрибутами:

class MyElement extends HTMLElement {
    ...
    static get observedAttributes() {
        return ["camelCaseAttribute"];
    }

    set camelCaseAttribute(a) {
        this._a = a;
    }
    ...
 }

Я использую это в своем HTML так:

<my-element camelCaseAttribute="blubb"></my-element>

Атрибут camelCaseAttribute не устанавливается при записи в camelCase, но запись без прописных букв работает. Почему?


person treeno    schedule 03.06.2017    source источник
comment
Какой фреймворк вы используете? Это имеет значение   -  person maxkoryukov    schedule 03.06.2017
comment
@maxkoryukov они используют новую технологию HTML, которая позволяет вам расширять HTMLElements для создания ваших собственных элементов html.   -  person Andrew Li    schedule 03.06.2017
comment
Я использую ванильные кастом-элементы. За исключением некоторых полифилов для браузеров, которые не поддерживают веб-компоненты, все это ваниль. Полифиллы - это github.com/webcomponents.   -  person treeno    schedule 03.06.2017


Ответы (2)


В Уровень жизни HTML, раздел 4.13.3 Основные концепции:

4.13.3 Основные концепции

Любой атрибут без пространства имен, который имеет отношение к функционированию элемента, как определено автором элемента, может быть указан в автономный настраиваемый элемент, при условии, что имя атрибута XML-совместимый и не содержит Верхние альфа-символы ASCII. Исключением является атрибут is, который нельзя указывать в автономном настраиваемый элемент (и который не будет иметь никакого эффекта, если это так).

В HTML Living Standard определено, что атрибуты пользовательского элемента без пространства имен должны быть XML-совместимыми и не содержать прописных букв ASCII, поэтому ваши атрибуты не могут быть в верблюжьем регистре.

person Andrew Li    schedule 03.06.2017

Эта ссылка может помочь: В спецификации HTML говорится об атрибутах данных

Настраиваемый атрибут данных - это атрибут без пространства имен, имя которого начинается со строки data-, имеет хотя бы один символ после дефиса, совместим с XML и не содержит букв ASCII в верхнем регистре.

person Ali Hesari    schedule 03.06.2017
comment
Но это не атрибут data-*. - person Andrew Li; 03.06.2017