Address issue with Unicode text in SVG icons; jshint

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@2880 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Brett Zamir 2014-06-13 02:45:12 +00:00
parent d84b1d267f
commit b1f88d2b94
1 changed files with 30 additions and 30 deletions

View File

@ -248,22 +248,22 @@ $(function() {
icon.removeAttr('style');
},1);
}
}
};
var addIcon = function(icon, id) {
if(opts.id_match === undefined || opts.id_match !== false) {
setIcon(holder, icon, id, true);
}
svg_icons[id] = icon;
}
};
function makeIcons(toImage, fallback) {
if(icons_made) return;
if(opts.no_img) toImage = false;
var holder;
var holder, temp_holder;
if(toImage) {
var temp_holder = $(document.createElement('div'));
temp_holder = $(document.createElement('div'));
temp_holder.hide().appendTo('body');
}
if(fallback) {
@ -315,17 +315,17 @@ $(function() {
if(!isOpera) svg = svg.cloneNode(true);
svgroot.appendChild(svg);
var icon;
if(toImage) {
// Without cloning, Safari will crash
// With cloning, causes issue in Opera/Win/Non-EN
var svgcontent = isOpera?svgroot:svgroot.cloneNode(true);
temp_holder.empty().append(svgroot);
var str = data_pre + encode64(temp_holder.html());
var icon = $(new Image())
var str = data_pre + encode64(unescape(encodeURIComponent(new XMLSerializer().serializeToString(svgroot))));
icon = $(new Image())
.attr({'class':'svg_icon', src:str});
} else {
var icon = fixIDs($(svgroot), i);
icon = fixIDs($(svgroot), i);
}
addIcon(icon, id);
}
@ -339,7 +339,7 @@ $(function() {
var copy = svg_icons[id].clone();
if(i > 0 && !toImage) copy = fixIDs(copy, i, true);
setIcon($(this), copy, id);
})
});
});
}
if(!fallback) {
@ -356,13 +356,13 @@ $(function() {
fixIDs = function(svg_el, svg_num, force) {
var defs = svg_el.find('defs');
if(!defs.length) return svg_el;
var id_elems;
if(isOpera) {
var id_elems = defs.find('*').filter(function() {
id_elems = defs.find('*').filter(function() {
return !!this.id;
});
} else {
var id_elems = defs.find('[id]');
id_elems = defs.find('[id]');
}
var all_elems = svg_el[0].getElementsByTagName('*'), len = all_elems.length;
@ -391,7 +391,7 @@ $(function() {
// this.setAttribute('filter', 'url(#' + new_id + ')');
// });
for(var i = 0; i < len; i++) {
for(i = 0; i < len; i++) {
var elem = all_elems[i];
if(elem.getAttribute('fill') === old_val) {
elem.setAttribute('fill', new_val);
@ -405,7 +405,7 @@ $(function() {
}
});
return svg_el;
}
};
function useFallback() {
if(file.indexOf('.svgz') != -1) {
@ -452,7 +452,7 @@ $(function() {
return output.join('');
}
}
};
$.getSvgIcon = function(id, uniqueClone) {
var icon = svg_icons[id];
@ -460,7 +460,7 @@ $(function() {
icon = fixIDs(icon, 0, true).clone(true);
}
return icon;
}
};
$.resizeSvgIcons = function(obj) {
// FF2 and older don't detect .svg_icon, so we change it detect svg elems instead
@ -481,6 +481,6 @@ $(function() {
}
});
});
}
};
})(jQuery);