Fix parsing error with url() format with quotes in it

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@1285 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Jeff Schiller 2010-01-27 19:35:13 +00:00
parent 3eb89914b6
commit ee393cd933
1 changed files with 32 additions and 7 deletions

View File

@ -1160,6 +1160,12 @@ function BatchCommand(text) {
}
}
// TODO: if element has fill/stroke pointing to a non-local reference, need to remove
// the attribute
// i.e. <circle fill="url(http://example.com/someEvilFile.svg#foo)" /> or
// <circle fill="url('http://example.com/someEvilFile.svg#foo')" /> or
// <circle fill='url("http://example.com/someEvilFile.svg#foo")' /> or
// recurse to children
i = node.childNodes.length;
while (i--) { sanitizeSvg(node.childNodes.item(i)); }
@ -1193,15 +1199,34 @@ function BatchCommand(text) {
$.each(all_els, function(i, el) {
var fill = el.getAttribute('fill');
if(fill && fill.indexOf('url(#') == 0) {
//found gradient
grad_uses.push(fill.substring(5,fill.indexOf(')')));
if(fill) {
// url(#somegrad)
if (fill.indexOf('url(#') == 0) {
grad_uses.push(fill.substring(5,fill.indexOf(')')));
}
// url("#somegrad")
else if (fill.indexOf('url("#') == 0) {
grad_uses.push(fill.substring(6,fill.indexOf('"',7)));
}
// url('#somegrad')
else if (fill.indexOf("url('#)") == 0) {
grad_uses.push(fill.substring(6,fill.indexOf("'",7)));
}
}
var stroke = el.getAttribute('stroke');
if(stroke && stroke.indexOf('url(#') == 0) {
//found gradient
grad_uses.push(stroke.substring(5,stroke.indexOf(')')));
if (stroke) {
if (stroke.indexOf('url(#') == 0) {
grad_uses.push(stroke.substring(5,stroke.indexOf(')')));
}
else if (stroke.indexOf('url("#') == 0) {
grad_uses.push(stroke.substring(6,stroke.indexOf('"',7)));
}
// url('#somegrad')
else if (stroke.indexOf("url('#)") == 0) {
grad_uses.push(stroke.substring(6,stroke.indexOf("'",7)));
}
}
// gradients can refer to other gradients