可以自定义元素'属性是camelCased?

时间:2017-06-03 19:03:13

标签: javascript html web-component custom-element

我有一个带属性的自定义元素:

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

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

我在我的HTML中使用它:

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

在camelCase中编写属性时未设置属性camelCaseAttribute,但是在没有大写字母的情况下编写它是有效的。为什么呢?

2 个答案:

答案 0 :(得分:5)

HTML Living Standard, Section 4.13.3 Core Concepts

  

4.13.3核心概念

     

与元素的作用相关的任何无名称空间属性(由元素的作者确定)可以在autonomous custom element上指定,只要属性名称为XML-compatible并且不包含ASCII upper alphas 。例外是is属性,不能在autonomous custom element上指定(如果是,则无效)。

HTML Living Standard中定义了自定义元素的无名称空间属性必须是XML兼容的,没有ASCII大写字母,因此您的属性不能是camelCased。

答案 1 :(得分:1)

此链接可能有所帮助:HTML spec says this about data attributes

  

自定义数据属性是no namespace中的一个属性,其名称以字符串&#34开头;数据 - &#34;,在连字符后至少有一个字符,与XML兼容,并且不包含大写ASCII字母