| <html> |
| <head> |
| <style id="style">@import url("fancyfonts.css") screen; |
| @media print { |
| body { font-size: 10pt } |
| } |
| @media screen { |
| body { font-size: 13px } |
| } |
| @media screen, print { |
| body { line-height: 1.2 } |
| } |
| .one {display: block;} |
| .two {display: inline;} |
| .three {display: list-item; list-style-type: square; margin-left: 3em;} |
| .four {display: none; color: red;} |
| I {display: block;} |
| </style> |
| </head> |
| <body onload="runTests();"> |
| <script> |
| function dumpRuleList(cssRules) |
| { |
| var s = ''; |
| |
| var i; |
| for (i = 0; i < cssRules.length; i++) { |
| rule = cssRules.item(i); |
| |
| switch (rule.type) { |
| case CSSRule.IMPORT_RULE: |
| s += '@import url("' + rule.href + '") ' + rule.media.mediaText; |
| s += ';\n'; |
| break; |
| case CSSRule.STYLE_RULE: |
| s += rule.selectorText + ' { '; |
| |
| style = rule.style; |
| for (j = 0; j < style.length; j++) { |
| s += style.item(j) + ': ' + style.getPropertyValue(style.item(j))+ '; '; |
| } |
| s += '} \n'; |
| break; |
| case CSSRule.MEDIA_RULE: |
| s += '@media ' + rule.media.mediaText + ' {\n'; |
| s += ' ' + dumpRuleList(rule.cssRules); |
| s += '}\n'; |
| break; |
| case CSSRule.PAGE_RULE: |
| s += '@page '; |
| break; |
| } |
| |
| } |
| |
| return s; |
| } |
| |
| function debug(s) { |
| console = document.getElementById('console'); |
| li = document.createElement('li'); |
| console.appendChild(li); |
| pre = document.createElement('pre'); |
| li.appendChild(pre); |
| t = document.createTextNode(s + '\n'); |
| pre.appendChild(t); |
| } |
| |
| function runTests() { |
| if (window.layoutTestController) |
| layoutTestController.dumpAsText(); |
| |
| originalStyle = document.getElementById('style').firstChild.nodeValue; |
| debug(originalStyle); |
| |
| styleSheet = document.styleSheets.item(0) |
| s = dumpRuleList(styleSheet.cssRules); |
| debug(s); |
| |
| s = "" |
| for (i = 0; i < styleSheet.cssRules.length; i++) { |
| rule = styleSheet.cssRules.item(i); |
| |
| s += rule.cssText + '\n'; |
| } |
| debug(s); |
| } |
| </script> |
| This tests different ways of deserializing css stylesheets. The first item below is the style as specified in the document. The second is serialized using the different rule accessors. The third just uses rule.cssText. If the test is successful, all three should be the same. |
| <ul id="console"> |
| </ul> |
| </body> |
| </html> |