如何在IE 11中获取Image.load上SVG的宽度和高度

san*_*hez 16 javascript internet-explorer svg

它可以在任何地方工作,但不是在IE 11(我尚未测试其他IE版本).

var img = new Image();
img.onload = function(){

   alert( 'img: ' + img.width + 'x' + img.height + 
          '  natural: ' + img.naturalWidth + 'x' + img.naturalHeight );

};
img.src = 'http://upload.wikimedia.org/wikipedia/en/b/b5/Boeing-Logo.svg';
Run Code Online (Sandbox Code Playgroud)

的jsfiddle: JSFiddle

结果:

img: 121x30 natural: 121x30 - 真正的浏览器(Chrome,Safari,Firefox,...)

img: 0x0 natural: 0x0 - IE 11

这里有一个类似的问题:在IE上获取图像加载时的图像宽度失败

这些答案中没有一个解决方案适用于svg.

有没有办法在Internet Explorer 11中获取用Image()加载的svg文件的宽度和高度?

注意:我正在寻找一个解决方案,而不必将元素添加到DOM进行测量,因为我想避免任何不必要的重新流/重绘.

小智 13

此代码适用于IE11:

var img = new Image();
img.onload = function(){
    document.body.appendChild(this);
    alert( 'img: ' + this.offsetWidth + 'x' + this.offsetHeight);
    document.body.removeChild(this);
};
img.src = 'http://upload.wikimedia.org/wikipedia/en/b/b5/Boeing-Logo.svg';
Run Code Online (Sandbox Code Playgroud)

是的 - 这个解决方案并不理想.