为什么onload事件永远不会在以下代码段中触发?
var img = new Image()
img.onload = function() {
alert("ok");
}
var svg = '<svg height="100" width="100"><circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" /></svg>'
img.src = 'data:image/svg+xml;base64,'+ btoa(svg);
链接到jsfiddle:https://jsfiddle.net/venmmn3b/1/
答案 0 :(得分:2)
因为不行 -
sed -i.bak "s/^$proxy/d" file
我的事件试图添加有效的svg:
var img = new Image()
img.onload = function() {
console.log("ok");
}
img.onerror = function(e) {
console.log("Not ok",e);
}
var svg = '<svg></svg>';
img.src = 'data:image/svg+xml;base64,'+ btoa(svg);
答案 1 :(得分:1)
感谢Terje的回答,我设法使其正常工作。 我仍然必须按照this tutorial中所述创建Blob和对象URL。
// SVG Containing version and xmlns attributes as Terje stated
const my_svg = `<svg version="1.1" xmlns="http://www.w3.org/2000/svg"></svg>`;
const img = document.createElement('img');
const blob = new Blob([my_svg], { type: 'image/svg+xml;charset=utf-8' })
const URLSrc = URL.createObjectURL(blob);
img.onload = function () {
console.log('Image Loaded')
}
img.src = URLSrc;
答案 2 :(得分:0)
您在
行中缺少引号 var svg = '<svg></svg>';.
并且当我将图片来源保持为&#34; http://pierre.chachatelier.fr/programmation/images/mozodojo-original-image.jpg&#34;时它也在工作。所以我认为你的形象只有一些问题。
答案 3 :(得分:0)
尝试将xmlns
和version
属性添加到svg。
示例:<svg version="1.1" xmlns="http://www.w3.org/2000/svg"></svg>