| <!DOCTYPE html> |
| <title>document: fg/bg/link/vlink/alink-color</title> |
| <link rel="author" title="Ms2ger" href="mailto:ms2ger@gmail.com"> |
| <link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-document-fgcolor"> |
| <link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-body-text"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| function setColorAttributes(doc, color) { |
| doc.fgColor = color; |
| doc.bgColor = color; |
| doc.linkColor = color; |
| doc.vlinkColor = color; |
| doc.alinkColor = color; |
| } |
| |
| function checkColorAttributes(doc, expected) { |
| assert_equals(document.fgColor, expected); |
| assert_equals(document.bgColor, expected); |
| assert_equals(document.linkColor, expected); |
| assert_equals(document.vlinkColor, expected); |
| assert_equals(document.alinkColor, expected); |
| } |
| |
| test(function() { |
| setColorAttributes(document, 'green'); |
| |
| var body = document.documentElement.removeChild(document.body); |
| this.add_cleanup(function() { |
| // Re-add body and reset color attributes. |
| document.body = body; |
| setColorAttributes(document, ''); |
| }); |
| // When there is no body element, the color attributes return an |
| // empty string upon getting. |
| checkColorAttributes(document, ''); |
| }, "getting document color attributes with no body"); |
| |
| test(function() { |
| var body = document.documentElement.removeChild(document.body); |
| this.add_cleanup(function() { |
| document.body = body; |
| }); |
| |
| // When there is no body element, setting the color attributes has no effect. |
| setColorAttributes(document, 'red'); |
| checkColorAttributes(document, ''); |
| }, "setting document color attributes with no body"); |
| |
| function testBogusRootElement(doc) { |
| doc.replaceChild(doc.createElement('test'), doc.documentElement); |
| var new_body = doc.createElement('body'); |
| doc.documentElement.appendChild(new_body); |
| |
| setColorAttributes(doc, 'red'); |
| |
| assert_equals(new_body.attributes.length, 0, 'new_body.attributes.length'); |
| checkColorAttributes(doc, ''); |
| } |
| |
| function createIframeDoc(markup) { |
| var iframe = document.createElement('iframe'); |
| document.body.appendChild(iframe); |
| var doc = iframe.contentDocument; |
| doc.open(); |
| doc.write(markup); |
| doc.close(); |
| return doc; |
| } |
| |
| test(function() { |
| // Use standards mode for doc |
| var doc = createIframeDoc('<!doctype html>'); |
| testBogusRootElement(doc); |
| }, "document color attributes when the root element is a test element (iframe)"); |
| |
| test(function() { |
| var doc = document.implementation.createHTMLDocument(); |
| testBogusRootElement(doc); |
| }, "document color attributes when the root element is a test element (createHTMLDocument)"); |
| |
| test(function() { |
| var doc = createIframeDoc('<!doctype html><frameset text=red link=red vlink=red alink=red bgcolor=red>'); |
| assert_equals(doc.body.attributes.length, 5, 'attributes.length on the frameset'); |
| checkColorAttributes(doc, ''); |
| }, "getting document color attributes when document.body is a frameset"); |
| |
| test(function() { |
| var doc = createIframeDoc('<!doctype html><frameset>'); |
| setColorAttributes(doc, 'red'); |
| assert_equals(doc.body.attributes.length, 0, 'attributes.length on the frameset'); |
| checkColorAttributes(doc, ''); |
| }, "setting document color attributes when document.body is a frameset"); |
| </script> |