以编程方式创建的SVG无法正确转换为base64。
在我的应用程序中,我有一个服务,该服务使用g-element响应,然后放入创建的svg-element并将其转换为base64,但是如果我尝试打开链接,我会发现svg不会在页面上呈现。
var xmlns = 'http://www.w3.org/2000/svg', IMAGE_TEMPLATE = document.createElementNS(xmlns, 'svg'); IMAGE_TEMPLATE.appendChild(document.body.querySelector('#ico-appliance-thermostat-128')); IMAGE_TEMPLATE.setAttribute('id', 'svg'); IMAGE_TEMPLATE.setAttributeNS(null, 'width', 128); IMAGE_TEMPLATE.setAttributeNS(null, 'height', 128); IMAGE_TEMPLATE.setAttributeNS(null, 'viewBox', '0 0 128 128'); document.body.querySelector('#test').appendChild(IMAGE_TEMPLATE); test = function(){ var s = new XMLSerializer().serializeToString(document.getElementById("svg")) var encodedData = window.btoa(s); console.log('data:image/svg+xml;base64,' + encodedData); }
https://jsfiddle.net/6sra5c5L/
尝试在
元素周围添加,}
在test
函数处关闭;定义test
为命名函数
var xmlns = 'http://www.w3.org/2000/svg',
IMAGE_TEMPLATE = document.createElementNS(xmlns, 'svg');
IMAGE_TEMPLATE.appendChild(document.body.querySelector('#ico-appliance-thermostat-128'));
IMAGE_TEMPLATE.setAttribute('id', 'svg');
IMAGE_TEMPLATE.setAttributeNS(null, 'width', 128);
IMAGE_TEMPLATE.setAttributeNS(null, 'height', 128);
IMAGE_TEMPLATE.setAttributeNS(null, 'viewBox', '0 0 128 128');
document.body.querySelector('#test').appendChild(IMAGE_TEMPLATE);
function test() {
var s = new XMLSerializer().serializeToString(document.getElementById("svg"))
console.log(document.getElementById("svg"))
console.log(s)
var encodedData = window.btoa(s);
console.log('data:image/svg+xml;base64,' + encodedData);
}