cssstyledeclaration-csstext-final-delimiter.html 2.11 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
<!DOCTYPE html>
<html>
  <head>
    <title>CSSOM - CSSStyleDeclaration - Text - Serialization - Delimiters</title>
    <link rel="author" title="Glenn Adams" href="mailto:glenn@skynav.com"/>
    <link rel="help" href="http://www.w3.org/TR/cssom/#the-cssstyledeclaration-interface"/>
    <meta name="flags" content="dom"/>
    <script src="../resources/testharness.js"></script>
    <script src="../resources/testharnessreport.js"></script>
  </head>
  <body>
    <div id="log"></div>
    <div id="box"></div>
    <script>
      var style = document.getElementById('box').style;
      var delim = new RegExp ( /(\s*\;\s*)/ );

      function countDelimiters(s) {
        var k = ( s.split(delim).length - 1 ) / 2;
        return k;
      }

      function getNthDelimiter(s,n) {
        if ( n > 0 ) {
          var sa = s.split(delim);
          var k = 1;
          for ( var i in sa ) {
            var s = sa[i];
            var m = delim.exec(s);
            if ( m && ( m.length > 1 ) ) {
              if ( k++ == n ) {
                return s;
              }                          
            }
          }
        }
        return '';
      }

      test(function(){

        style.cssText = "";
        assert_equals(countDelimiters(style.cssText), 0);
        assert_equals(getNthDelimiter(style.cssText,0), "");
        assert_equals(style.cssText, "");

      }, 'inline style - text - delimiters - zero declarations');

      test(function(){

        style.cssText = "left: 10px";
        assert_equals(countDelimiters(style.cssText), 1);
        assert_equals(getNthDelimiter(style.cssText,1), ";");
        assert_equals(style.cssText, "left: 10px;");

      }, 'inline style - text - delimiters - one declaration');

      test(function(){

        style.cssText = "left: 10px; right: 20px";
        assert_equals(countDelimiters(style.cssText), 2);
        assert_equals(getNthDelimiter(style.cssText,1), "; ");
        assert_equals(getNthDelimiter(style.cssText,2), ";");
        assert_equals(style.cssText, "left: 10px; right: 20px;");

      }, 'inline style - text - delimiters - two declarations');
    </script>
  </body>
</html>