Trim whitespace in style attributes.
authorJuriy Zaytsev <kangax@gmail.com>
Sat, 13 Mar 2010 22:16:56 +0000 (17:16 -0500)
committerJuriy Zaytsev <kangax@gmail.com>
Sat, 13 Mar 2010 22:16:56 +0000 (17:16 -0500)
src/htmlminifier.js
tests/index.html

index 1a3f0e4..56a49b9 100644 (file)
   
   function cleanAttributeValue(tag, attrName, attrValue) {
     if (isEventAttribute(attrName)) {
-      return trimWhitespace(attrValue.replace(/^\s*javascript:\s*/i, ''));
+      return trimWhitespace(attrValue).replace(/^javascript:\s*/i, '');
     }
     else if (attrName === 'class') {
       return collapseWhitespace(trimWhitespace(attrValue));
     }
-    else if (isUriTypeAttribute(attrName)) {
+    else if (isUriTypeAttribute(attrName) || attrName === 'style') {
       return trimWhitespace(attrValue);
     }
     return attrValue;
index 3905733..b8148b1 100644 (file)
           equals(minify(input, { removeEmptyAttributes: true }), '<img src="" alt="">');
         });
         
-        test('cleaning class attributes', function(){
+        test('cleaning class/style attributes', function(){
           input = '<p class=" foo bar  ">foo bar baz</p>', output;
           equals(minify(input, { cleanAttributes: true }), '<p class="foo bar">foo bar baz</p>');
           
           equals(minify(input, { cleanAttributes: true, removeAttributeQuotes: true }), '<p class=foo>foo bar baz</p>');
           
           input = '<p class="\n  \n foo   \n\n\t  \t\n   ">foo bar baz</p>';
-          equals(minify(input, { cleanAttributes: true }), '<p class="foo">foo bar baz</p>');
+          output = '<p class="foo">foo bar baz</p>';
+          equals(minify(input, { cleanAttributes: true }), output);
           
           input = '<p class="\n  \n foo   \n\n\t  \t\n  class1 class-23 ">foo bar baz</p>';
-          equals(minify(input, { cleanAttributes: true }), '<p class="foo class1 class-23">foo bar baz</p>');
+          output = '<p class="foo class1 class-23">foo bar baz</p>';
+          equals(minify(input, { cleanAttributes: true }), output);
+          
+          input = '<p style="    color: red; background-color: rgb(100, 75, 200);  "></p>';
+          output = '<p style="color: red; background-color: rgb(100, 75, 200);"></p>';
+          equals(minify(input, { cleanAttributes: true }), output);
         });
         
         test('cleaning URI-based attributes', function(){
           input = '<a href="#" onclick="  window.prompt(\'boo\'); " onmouseover=" \n\n alert(123);  \t \n\t  ">blah</a>';
           output = '<a href="#" onclick="window.prompt(\'boo\');" onmouseover="alert(123);">blah</a>';
           equals(minify(input, { cleanAttributes: true }), output);
+          
+          input = '<body onload="  foo();   bar()   "><p>x</body>';
+          output = '<body onload="foo();   bar()"><p>x</p></body>';
+          equals(minify(input, { cleanAttributes: true }), output);
         });
         
         test('removing redundant attributes (&lt;form method="get" ...>)', function(){