File: name-content-attribute-and-property.html

package info (click to toggle)
thunderbird 1%3A78.14.0-1~deb10u1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,922,628 kB
  • sloc: cpp: 5,990,120; javascript: 4,418,692; ansic: 3,063,889; python: 915,509; asm: 304,197; xml: 206,623; sh: 109,253; java: 108,679; makefile: 22,985; perl: 15,867; yacc: 4,565; objc: 3,026; pascal: 1,787; lex: 1,720; ada: 1,681; cs: 879; exp: 505; awk: 485; sql: 452; php: 436; lisp: 432; ruby: 99; sed: 69; csh: 45
file content (74 lines) | stat: -rw-r--r-- 2,707 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE html>
<title>Only certain HTML elements reflect the name content attribute as a property</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
  function doesReflect(tagName) {
    var element = document.createElement(tagName);
    element.setAttribute("name", "foo");
    assert_equals(element.getAttribute("name"), "foo", "setAttribute should change content attribute");
    element.name = "bar";
    assert_equals(element.getAttribute("name"), "bar", "assignment to .name should change content attribute");
  }

  function doesNotReflect(tagName) {
    var element = document.createElement(tagName);
    element.setAttribute("name", "foo");
    assert_equals(element.getAttribute("name"), "foo", "setAttribute should change content attribute");
    element.name = "bar";
    assert_equals(element.getAttribute("name"), "foo", "assignment to .name should not change content attribute");
  }

  var nonReflectingTagNames = [
    "abbr", "acronym", "address", "area", "article", "aside", "audio",
    "b", "base", "bdi", "bdo", "bgsound", "big", "blink", "blockquote", "body","br",
    "canvas", "caption", "center", "cite", "code", "col", "colgroup",
    "data", "datalist", "dd", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt",
    "em",
    "figcaption", "figure", "font", "footer", "frameset",
    "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html",
    "i", "ins", "isindex",
    "kbd",
    "label", "legend", "li", "link", "listing",
    "main", "mark", "marquee", "meter", "multicol",
    "nav", "nextid", "nobr", "noframes", "noscript",
    "option",
    "p", "picture", "plaintext", "pre", "progress",
    "q",
    "rp", "rt", "ruby",
    "s", "samp", "script", "section", "small", "source", "spacer",
    "span", "strike", "strong", "style", "sub", "summary", "sup",
    "table", "tbody", "td", "template", "tfoot",
    "th", "thead", "time", "title", "tr", "tt", "track",
    "u", "ul",
    "var", "video",
    "wbr",
    "xmp",
    "unknown"
  ];

  var reflectingTagNames = [
    "a", "button", "embed",
    "fieldset", "form", "frame",
    "iframe", "img", "input",
    "map", "meta",
    "object", "output",
    "param",
    "select", "slot",
    "textarea",
  ];

  reflectingTagNames.forEach(function(tagName) {
    test(function() {
      doesReflect(tagName)
    }, tagName + " element's name property reflects its content attribute");
  });

  nonReflectingTagNames.forEach(function(tagName) {
    test(function() {
      doesNotReflect(tagName)
    }, tagName + " element's name property does not reflect its content attribute");
  });
</script>