如何获取新加载的图像's width / naturalWidth
How to get a newly loaded image's width / naturalWidth?
假设如下html:
<img src="thumbnail/img.png">
<div class="frame">
</div>
缩略图位于它们自己的目录thumbnail
中,而它们所引用的常规大小的图像位于regular
中。缩略图附加了一个事件监听器,其行为类似于单击(作为e
的事件作为参数传递):
var src = $(e.target).attr("src");
var path = "regular/" + src.slice(src.lastIndexOf("/") + 1);
在这个例子中,我在变量path
中输入的是regular/img.png
。接下来,我想让frame
把path
的图片作为背景,并调整它的大小,但是奇怪的事情发生了:
var image = new Image();
image.src = path;
console.log(image.width); // weirdness starts here
// same behavior with .naturalWidth
我希望控制台显示image
的宽度,但我得到的是0
。只有在第一次点击时才会得到正确的值。
为什么?
这仅仅是因为图像还没有加载。在设置"src"属性之前(而不是之后,因为一旦你设置了"src",它就会开始加载文件),你需要像这样注册一个事件监听器,然后在回调函数中做你的事情:
var image = new Image();
image.addEventListener("load", function() {
console.log(image.width);
}, false);
image.src = path;
注意:这是纯javascript,因此不依赖于任何外部库;如果您愿意,也可以使用jQuery的load
函数或类似的东西来实现相同的效果。
相关文章:
- 可以't使用JavaScript获取width属性
- margin-left和width属性在mozillafirefox中不起作用
- 获取Div Width,然后更新Scope Variable
- 无法理解$(window).width()的结果
- $.width()在使用自定义字体时返回不同的结果
- 先前创建的Element的jQuery.width()返回0
- TinyMCE/IE9/DIV with Width/Height/ContentEditable/如何阻止DIV选择
- HTML
“width” 属性在不同的浏览器中产生不同的结果 - 为什么 jQuery $('#selector').width(1) 应用 17px 而不是 1px
- 如何将 screen.width 值替换为我自己定义的值
- jquery .width(value) 是否调整容器内图像的大小
- jQuery width();无法正常工作
- 单击按钮调整Div Width的大小
- 如果screen.width<=480,只有一次;第一次通过移动设备见面
- 在纯JavaScript中,jQuery的.height()和.width()等价于什么
- jquery$(“#someID”).width(变量+'px')有效,现在无效
- window.screen.width和window.screen.height在iPad3上不起作用
- IE 0.width为null或不是对象
- IE11中的jQuery-$(document).width()和$(“html&”).widh()之间的差异
- 如何获取新加载的图像's width / naturalWidth