Skip to content

AttributesToken

bhsd edited this page Nov 24, 2023 · 25 revisions

AttributesToken

扩展和 HTML 标签及表格的属性。

实例属性

name: string

  • 小写的标签名。
var root = Parser.parse('<REF/>'),
    attr = root.querySelector('ext-attrs'); // 即使没有设置属性,扩展和 HTML 标签的第一个子节点也总是 AttributesToken
assert.strictEqual(attr.name, 'ref');

原型属性

attributes: Record<string, string|true>

  • 标签属性对象。
var root = Parser.parse('<choose uncached before="a"></choose>'),
    attr = root.querySelector('ext-attrs'); // 扩展标签属性的 type 值为 'ext-attrs'
assert.deepStrictEqual(attr.attributes, {uncached: true, before: 'a'});

className: string

  • 单个字符串表示的类名。
var root = Parser.parse('<p class="first second">'),
    attr = root.querySelector('html-attrs'); // HTML标签属性的 type 值为 'html-attrs'
assert.strictEqual(attr.className, 'first second');

classList: Set<string>

  • 以 Set 表示的所有类名。
var root = Parser.parse('{|class="wikitable green"\n|}'),
    attr = root.querySelector('table-attrs'); // 表格、表格行、单元格属性的 type 值为 'table-attrs'
assert.deepStrictEqual(attr.classList, new Set(['wikitable', 'green']));

id: string

  • id属性。
var root = Parser.parse('<p id=p1>'),
    attr = root.querySelector('html-attrs');
assert.strictEqual(attr.id, 'p1');

原型方法

hasAttr(key: string): boolean

  • 是否带有指定属性。
var root = Parser.parse('<choose uncached before="a"></choose>'),
    attr = root.querySelector('ext-attrs');
assert(attr.hasAttr('uncached') === true);
assert(attr.hasAttr('before') === true);

getAttr(key: string): string|boolean

  • 获取指定属性。
var root = Parser.parse('<choose uncached before="a"></choose>'),
    attr = root.querySelector('ext-attrs');
assert(attr.getAttr('uncached') === true);
assert.strictEqual(attr.getAttr('before'), 'a');

getAttrNames(): Set<string>

  • 获取属性名列表。
var root = Parser.parse('<ref name="a"/>'),
    attr = root.querySelector('ext-attrs');
assert.deepStrictEqual(attr.getAttrNames(), new Set(['name']));

hasAttrs(): boolean

  • 是否带有至少一条属性。
var root = Parser.parse('<ref/>'),
    attr = root.querySelector('ext-attrs');
assert(attr.hasAttrs() === false);

setAttr(key: string, value: string|boolean): void

  • 设置属性。
var root = Parser.parse('<choose></choose>'),
    attr = root.querySelector('ext-attrs');
attr.setAttr('before', 'a');
attr.setAttr('uncached', true);
assert.strictEqual(root.toString(), '<choose before="a" uncached></choose>');

removeAttr(key: string): void

  • 移除指定属性。
var root = Parser.parse('<ref name="a"/>'),
    attr = root.querySelector('ext-attrs');
attr.removeAttr('name');
assert.strictEqual(root.toString(), '<ref />');

toggleAttr(key: string): void

  • 切换某 Boolean 属性。
var root = Parser.parse('<choose uncached></choose>'),
    attr = root.querySelector('ext-attrs');
attr.toggleAttr('uncached');
assert.strictEqual(root.toString(), '<choose ></choose>');
attr.toggleAttr('uncached');
assert.strictEqual(root.toString(), '<choose uncached></choose>');

sanitize(): void

  • 清理无效属性。
var root = Parser.parse('<p ">'),
    attr = root.querySelector('html-attrs');
attr.sanitize();
assert.strictEqual(root.toString(), '<p>');
Clone this wiki locally