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

在浏览器未加载图片之前获取图片宽高?

在浏览器未加载图片之前获取图片宽高?

小唯快跑啊 2018-09-19 10:10:10
问题:1、如果浏览器还没有加载的图片,是不是没有方法在加载之前获取其宽高?2、js脚本按顺序执行,但当有dom添加删除等操作的时候,其加载、渲染的操作是不是采用异步执行的?问题场景:尝试在浏览器还没有渲染图片之前在脚本中获得它的宽高:var img = new Image(); img.src = 'images/1.jpg'; console.log(img.width,img.height);此时会打印的会是:0 0;但当我的页面中已经使用过该图片并且已经渲染在页面上的时候,以上代码就会打印图片原本的宽高。于是我尝试着新建图片元素后加到文档中,然后再获取其宽高:var newImg = document.createElement('img');newImg.src = 'images/1.jpg'; document.body.appendChild(newImg); console.log(newImg.width,newImg.height);打印还是:0 0;只有等到其真正完成了图片的渲染操作后才可以正确的打印,所以当我把打印的操作使用setTimeout延时打印的时候就可以正确的得到其宽高。
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

回答:

  1. 不是

另外我的看法:

  1. 用 setTimeout 延时获取到图片的尺寸虽然成功了, 但这前提是, 延时代码执行的时候, 浏览器已加载完毕图片;

  2. 正确的姿势如 @浴火小青春 所言, 是在 img 的 load 事件结束时(后)再获取其尺寸. 这个回调你可以用 onload 属性来做, 也可以用 addEventListener 来做;

  3. 图片就算不在 DOM 里也可能被浏览器加载, 至少我用 Chrome 实例一个 Image 对象并赋值给其 src 属性后, 浏览器就请求了这张图片;

  4. 提前从服务端那里拿到图片的尺寸, 就没这么折腾了.


查看完整回答
反对 回复 2018-10-15
  • 1 回答
  • 0 关注
  • 1248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号