它在任何地方都可以正常工作,但在 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';
JSFiddle: <知识库> JSFiddle
结果:
img: 121x30 natural: 121x30
- 真正的浏览器(Chrome、Safari、Firefox,...)
img: 0x0 natural: 0x0
- IE 11
这里有一个类似的问题:Getting image width on image load fails on IE
这些答案中的解决方案均不适用于 svg。
有没有办法在 Internet Explorer 11 中获取使用 Image() 加载的 svg 文件的宽度和高度?
注意:我正在寻找一种无需将元素添加到 DOM 进行测量的解决方案,因为我想避免任何不必要的重排/重绘。
最佳答案
此代码适用于 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';
是的 - 这个解决方案并不理想。
关于javascript - 如何在 IE 11 的 Image.load 上获取 SVG 的宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22822921/