【发布时间】:2020-02-19 04:40:05
【问题描述】:
我正在尝试从 IE11 上的 SVG 图像中获取 naturalWidth 属性。我可以在 Chrome、Firefox 和 Safari 上获得 naturalWidth 和 naturalHeight,但在 IE11 上它总是返回 0。
Here 是一个显示问题的简单 Codepen,here 是调试视图,因此您可以在 IE11 上执行它(或者您可以只运行下面的代码),您会看到在 IE11 上宽度是正确的但 naturalWidth 始终为 0。
document.getElementById('mbutton').onclick = function() {
var divNatural = document.getElementById('natural-width');
divNatural.innerHTML = 'Natural Width: ' + document.getElementById('msvg').naturalWidth;
var divWidth = document.getElementById('width');
divWidth.innerHTML = 'Width: ' + document.getElementById('msvg').width;
}
<button id="mbutton">Get Width</button>
<div id="natural-width">0</div>
<div id="width">0</div>
<img id="msvg" src="https://upload.wikimedia.org/wikipedia/commons/6/6b/Bitmap_VS_SVG.svg">
与此相关的所有问题都指向不等待图像加载,这里不是这种情况,这是IE11中的已知问题吗?有什么解决方法吗?
【问题讨论】:
-
您可以尝试通过 ajax 加载文件,对其进行解析,然后读取根元素的宽度/高度。 IE。做其他浏览器为您做的事情。
-
我尝试测试该问题并能够使用 IE 重现该问题。我发现如果我们使用 png 图像而不是代码可以正常工作,那么问题只会出现在 svg 图像上。目前,它看起来像 IE 中的任何类型的错误。作为一种解决方法,您可以尝试参考 Robert longson 给出的建议。我将尝试将此错误提交给 Microsoft。感谢您的理解。
标签: javascript svg internet-explorer-11