parse out prefixed methods

This commit is contained in:
Andy Edinborough 2012-12-28 12:54:58 -06:00
parent a4b7d04e80
commit 04782c1716
2 changed files with 31 additions and 17 deletions

View File

@ -37,16 +37,24 @@ _html2canvas.Util.parseBackgroundImage = function (value) {
if(!value) { return results; } if(!value) { return results; }
while( n++ < 100 && !!(match = value.match(rxBackgroundImage)) ) { while( n++ < 100 && !!(match = value.match(rxBackgroundImage)) ) {
var def = match[2]; var def = match[2],
if(def.substr( 0, 1 ) === '"') { method = match[1],
def = def.substr(1, def.length-2); prefix = '', i;
} if(def.substr( 0, 1 ) === '"') {
results.push({ def = def.substr( 1, def.length-2 );
method: match[1], }
definition: def, if(method.substr( 0, 1 ) === '-' &&
value: match[0] (i = method.indexOf( '-', 1 ) + 1) > 0) {
}); prefix = method.substr( 0, i);
value = value.replace( match[0], '' ); method = method.substr( i );
}
results.push({
prefix: prefix,
method: method,
definition: def,
value: match[0]
});
value = value.replace( match[0], '' );
} }
return results; return results;
}; };

View File

@ -148,20 +148,20 @@ $(function() {
test('background-image', function () { test('background-image', function () {
test_parse_background_image( test_parse_background_image(
'url(test)', 'url(test)',
{ method: 'url', definition: 'test', value: 'url(test)' }, { prefix: '', method: 'url', definition: 'test', value: 'url(test)' },
'basic url' 'basic url'
); );
test_parse_background_image( test_parse_background_image(
'url("test")', 'url("test")',
{ method: 'url', definition: 'test', value: 'url("test")' }, { prefix: '', method: 'url', definition: 'test', value: 'url("test")' },
'quoted url' 'quoted url'
); );
test_parse_background_image( test_parse_background_image(
'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)', 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',
{ {
method: 'url', prefix: '', method: 'url',
definition: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', definition: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
value: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)' value: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)'
}, },
@ -170,15 +170,21 @@ $(function() {
test_parse_background_image( test_parse_background_image(
'linear-gradient(red,black)', 'linear-gradient(red,black)',
{ method: 'linear-gradient', definition: 'red,black', value: 'linear-gradient(red,black)' }, { prefix: '', method: 'linear-gradient', definition: 'red,black', value: 'linear-gradient(red,black)' },
'linear-gradient'
);
test_parse_background_image(
'-webkit-linear-gradient(red,black)',
{ prefix: '-webkit-', method: 'linear-gradient', definition: 'red,black', value: '-webkit-linear-gradient(red,black)' },
'linear-gradient' 'linear-gradient'
); );
test_parse_background_image( test_parse_background_image(
'linear-gradient(red,black), url(test), url("test")', [ 'linear-gradient(red,black), url(test), url("test")', [
{ method: 'linear-gradient', definition: 'red,black', value: 'linear-gradient(red,black)' }, { prefix: '', method: 'linear-gradient', definition: 'red,black', value: 'linear-gradient(red,black)' },
{ method: 'url', definition: 'test', value: 'url(test)' }, { prefix: '', method: 'url', definition: 'test', value: 'url(test)' },
{ method: 'url', definition: 'test', value: 'url("test")' } { prefix: '', method: 'url', definition: 'test', value: 'url("test")' }
], ],
'multiple backgrounds' 'multiple backgrounds'
); );