Strip trailing ";" from event attributes (onclick, onmouseover, etc.).
authorJuriy Zaytsev <kangax@gmail.com>
Mon, 15 Mar 2010 18:01:43 +0000 (14:01 -0400)
committerJuriy Zaytsev <kangax@gmail.com>
Mon, 15 Mar 2010 18:01:43 +0000 (14:01 -0400)
src/htmlminifier.js
tests/index.html

index e42e2db..031b617 100644 (file)
   
   function cleanAttributeValue(tag, attrName, attrValue) {
     if (isEventAttribute(attrName)) {
-      return trimWhitespace(attrValue).replace(/^javascript:\s*/i, '');
+      return trimWhitespace(attrValue).replace(/^javascript:\s*/i, '').replace(/\s*;$/, '');
     }
     else if (attrName === 'class') {
       return collapseWhitespace(trimWhitespace(attrValue));
index bec13dc..818f492 100644 (file)
         });
         
         test('cleaning other 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>';
+          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>';
+          input = '<body onload="  foo();   bar() ;  "><p>x</body>';
           output = '<body onload="foo();   bar()"><p>x</p></body>';
           equals(minify(input, { cleanAttributes: true }), output);
         });