Address issue with Unicode text in SVG icons; jshint
git-svn-id: http://svg-edit.googlecode.com/svn/trunk@2880 eee81c28-f429-11dd-99c0-75d572ba1dddmaster
parent
d84b1d267f
commit
b1f88d2b94
|
@ -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);
|
Loading…
Reference in New Issue