Image.onload 函数为高度和宽度返回零
Image.onload function returns zero for height and width
var icon1 = new Image();
var wid1;
var hei1;
icon1.onload = function () {
wid1 = icon1.width;
hei1 = icon1.height;
};
icon1.src = resource;
var rati = wid1 / hei1;
我正在尝试做的是获取图像的宽度和高度,然后计算比率,这将进一步帮助保持图像的纵横比。
但是当我运行此代码时,很多时候我会将图像的宽度和高度0
,这将导致转向比为 NaN
,最后由于高度和宽度0
图像永远不会加载。有什么帮助吗?
此操作异步运行。该行:
var rati=wid1/hei1;
无论是否加载图像,都运行。这意味着wid1
和hei1
undefined
,将两个未定义的值除以NaN
。
在对它们执行操作之前,请确保已加载wid1
和hei1
。您可以做的是将divide 操作放在 onload
处理程序中(以及依赖于这些值的其他所有内容(:
var icon1, wid1, hei1, rati;
//create our image object
icon1 = new Image();
icon1.onload = function () {
wid1 = icon1.width;
hei1 = icon1.height;
rati = wid1 / hei1;
//everything else that depends on these variables
//should be placed here as well
};
//start loadin'
icon1.src = resource;
JavaScript 异步
加载图像,因此您尝试在图像仍在加载时计算比率。您必须将计算移动到回调函数中:
var icon1 = new Image();
var wid1;
var hei1;
icon1.src = resource;
icon1.onload = function () {
wid1 = icon1.width;
hei1 = icon1.height;
var rati = wid1 / hei1;
};
我遇到了一个问题,即 image.width 和 image.height 在加载回调中为 0。 它们是为 jpg 文件设置的,而不是在我加载 png 时设置的。我通过在加载回调函数中使用 this.width 和 this.height 来解决此问题。 这些不是零.
也许这会帮助其他人。 我正在使用铬。
争用条件。您在加载图像之前定义rati
,因此显然它无法知道正确的大小并且undefined/undefined
。若要修复,只需将需要加载图像的所有代码放在icon1.onload
处理程序中即可。
相关文章:
- 尝试使用多个Twenty20实例,但有些实例的高度返回为0,并且不显示
- Javascript返回内容/字符串;不适合UIWebView的给定宽度和高度
- 黑莓网站:窗口大小(窗口高度)在黑莓模拟器中返回不正确的值
- Jquery高度返回错误值
- Image.onload 函数为高度和宽度返回零
- Android Webview onLoad返回错误的高度
- .height() 以百分比返回高度,如何以像素为单位获取它
- jquery 高度返回 0
- 为什么jQuery为元素高度返回null
- 我设置的高度和宽度值与返回的值不一致的原因是什么
- 图像高度始终返回为0
- onLoad返回0作为宽度和高度
- 文档's总高度函数's的返回值在浏览器刷新时发生更改(F5)
- Jquery偶尔会在图像上返回零高度和零宽度
- 为什么不't此代码返回完整的文档高度
- jquery最大高度和最大宽度返回错误的值
- FabricJS toDataURL倍增器没有返回正确的高度/缩放正确
- Javascript在Firefox for Android中随机返回不一致的高度
- jQuery加载事件在Chrome浏览器返回零的宽度/高度值在弹出
- Javascript Image()返回错误的宽度和高度