Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<meta charset="utf-8">
<title>DOMParser: parseFromString() with stylesheets</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
"use strict";
test(() => {
const parser = new DOMParser();
const doc = parser.parseFromString("<style>div { color: green; }</style>", "text/html");
assert_equals(doc.styleSheets.length, 1, "Document should have one stylesheet");
}, "DOMParser-created document should have accessible styleSheets collection with one style element");
test(() => {
const parser = new DOMParser();
const doc = parser.parseFromString("<style>div { color: green; }</style>", "text/html");
assert_equals(doc.styleSheets.length, 1, "Document should have one stylesheet");
const sheet = doc.styleSheets[0];
assert_true(sheet instanceof CSSStyleSheet, "styleSheets[0] should be a CSSStyleSheet");
}, "DOMParser-created document styleSheets should contain CSSStyleSheet objects");
test(() => {
const parser = new DOMParser();
const doc = parser.parseFromString("<style>div { color: green; } p { color: red; }</style>", "text/html");
assert_equals(doc.styleSheets.length, 1, "Document should have one stylesheet");
const sheet = doc.styleSheets[0];
assert_equals(sheet.cssRules.length, 2, "Stylesheet should have two CSS rules");
}, "DOMParser-created document styleSheets should have accessible cssRules");
test(() => {
const parser = new DOMParser();
const doc = parser.parseFromString(
"<style>div { color: green; }</style><style>p { color: red; }</style>",
"text/html"
);
assert_equals(doc.styleSheets.length, 2, "Document should have two stylesheets");
}, "DOMParser-created document should expose multiple style elements in styleSheets");
test(() => {
const parser = new DOMParser();
const html = `
<!DOCTYPE html>
<html>
<head>
<style>
.test { color: blue; }
</style>
</head>
<body>
<div class="test">Hello</div>
</body>
</html>
`;
const doc = parser.parseFromString(html, "text/html");
assert_equals(doc.styleSheets.length, 1, "Document should have one stylesheet");
const sheet = doc.styleSheets[0];
assert_equals(sheet.cssRules.length, 1, "Stylesheet should have one CSS rule");
assert_equals(sheet.cssRules[0].selectorText, ".test", "CSS rule should have correct selector");
}, "DOMParser-created document with full HTML structure should have accessible styleSheets");
test(() => {
const parser = new DOMParser();
const doc = parser.parseFromString("<div>No styles</div>", "text/html");
assert_equals(doc.styleSheets.length, 0, "Document without style elements should have empty styleSheets");
}, "DOMParser-created document without style elements should have empty styleSheets collection");
</script>