gpt4 book ai didi

javascript - 检查用户加载的图像宽度的函数随机返回 0

转载 作者:行者123 更新时间:2023-11-30 12:56:01 25 4
gpt4 key购买 nike

我试图编写一个函数来检查我通过 input[type=file] 选择的图像是否恰好为 700 像素宽,如果不是 - 拒绝该图像。然而,我成功了,有时这个函数随机返回 0,我需要加载同一张图像几次,直到它正确读取它的宽度。关于如何改进此代码的任何想法?提前致谢!

    if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function(e) {
var img = new Image;
img.src = e.target.result;
if(img.width == 700) {
DoSomeStuff();
} else {
alert("This image has to be 700 px wide, but is " + img.width + " px wide. Try again!");
input.value = "";
}
};
reader.readAsDataURL(input.files[0]);
}

最佳答案

使用.onload 这样函数只会在加载图像时触发。

 if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function(e) {
var img = new Image;


img.onload = function(){
if(img.width == 700) {
DoSomeStuff();
} else {
alert("This image has to be 700 px wide, but is " + img.width + " px wide. Try again!");
input.value = "";
}
}


img.src = e.target.result;
};
reader.readAsDataURL(input.files[0]);
}

或者你可以添加一个事件监听器:

img.addEventListener("load", function() {
if(this.width == 700) {
DoSomeStuff();
} else {
alert("This image has to be 700 px wide, but is " + this.width + " px wide. Try again!");
input.value = "";
}
});

但对于ie只有ie9以上支持.addEventListener,所以ie8以下使用.attachEvent

img.attachEvent("onload", function() {});

你可以做一个if语句来检查浏览器是否支持.addEventListener:

if (img.addEventListener)
//return false if broswer does not support

关于javascript - 检查用户加载的图像宽度的函数随机返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19085308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com