为了账号安全,请及时绑定邮箱和手机立即绑定

如何等到 image.src 在 image.onload 事件函数中设置?

如何等到 image.src 在 image.onload 事件函数中设置?

眼眸繁星 2023-06-15 15:59:34
在我的新 image() 对象的浏览器 javascript 中,对于 onload 事件,我首先在用户选择图像文件后设置 image.src ;然后读取图像对象的大小。但似乎读取发生在正确设置 src 之前。我碰巧找到了两次调用该函数的修复方法。但是这个解决方案似乎是一个非常糟糕的主意。请让我知道如何以标准方式修复它。我的环境接受打字稿。var imgLoaded=false; var file = document.getElementById("fileInput").files[0];      for(let i=0;i<2;i++){              call2(file);         }         function call2(file) {      var reader = new FileReader();      reader.readAsDataURL(file);      reader.onload = function () {          if(!imgLoaded){               imgLoaded=true;   img.src=(reader.result).toString();}         else{        console.log(img.width);      }}
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

在一种方式中,您可以替换 file = document.getElementById("fileInput").files[0];file = event.target.files[0] 并在 call2 中使用它,您还应该将事件传递给 call2

例如:在 html 中: <input type="file" onchange="call2(event)" />,然后在 js 中function call2(e){let file = e.target.files[0] ... }


查看完整回答
反对 回复 2023-06-15
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

await (img.src= await (reader.result).toString())

也可以。无需调用控制台。


查看完整回答
反对 回复 2023-06-15
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我自己至少找到了一个更好的解决方案。虽然我不知道这是否是一个标准。



 var file = document.getElementById("fileInput").files[0];

          call2(file);

      


    function call2(file) {

      var reader = new FileReader();

      reader.readAsDataURL(file);


      reader.onload =async function () {

         img.src= await (reader.result).toString();

         console.log(await img.width);

      }}


查看完整回答
反对 回复 2023-06-15
  • 3 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信