mirror of
https://github.com/SerenityOS/serenity
synced 2026-05-13 18:37:37 +02:00
The HTML tokenizer specification says that we're supposed to do this when leaving the Attribute name or when emitting the token, as appropriate. Hopefully 'as appropriate' can mean only when emitting the token, as that's the easiest place to insert this logic without complicating the tokenizer any more. (cherry picked from commit 7aa0165fe75bb94b79bc847484c7913d249ce263)
22 lines
896 B
HTML
22 lines
896 B
HTML
<!DOCTYPE html>
|
|
<script src="include.js"></script>
|
|
<div id="fred"id="barney" class="math"></div>
|
|
<div class class=1"foo" id="spaghetti" id></div>
|
|
<div grape="foo" grape grape="bar" grape grape grape=baz></div>
|
|
<script>
|
|
test(() => {
|
|
let divs = document.getElementsByTagName("div");
|
|
|
|
// Per the HTML spec, the first attribute wins.
|
|
println(`divs[0].id: ${divs[0].id}`);
|
|
println(`divs[0].className: ${divs[0].className}`);
|
|
println(`divs[1].id: ${divs[1].id}`);
|
|
println(`divs[1].className: ${divs[1].className}`);
|
|
println(`divs[2].getAttribute("grape"): ${divs[2].getAttribute("grape")}`);
|
|
|
|
println(`divs[0].numAttributes: ${divs[0].attributes.length}`); // 2
|
|
println(`divs[1].numAttributes: ${divs[1].attributes.length}`); // 2
|
|
println(`divs[2].numAttributes: ${divs[2].attributes.length}`); // 1
|
|
});
|
|
</script>
|