Source code

Revision control

Other Tools

Test Info:

<!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>