【问题标题】:Best practice to get image info获取图像信息的最佳实践
【发布时间】:2012-11-11 22:05:44
【问题描述】:

我尝试使用 JQuery 广告将图像加载到 HTML 元素中,并使用图像属性来做其他事情。 我试图做的是这样的:

var img = new Image();
img.src = "icon.png";
var width = img.width;
var height = img.height;
$("#element").css("background-image", "url(" + img.src + ")");
//use width and height...

它在大多数情况下都有效,但我发现有时“宽度”和“高度”设置为 0。 做一些搜索我发现图像加载是一个异步工作,所以碰巧我尝试在它仍未加载时读取属性。 我发现有一个 onLoad 事件可以用来指定图片加载时的回调函数。

我想知道这是否是做这些事情的最佳方式。例如,假设我只需要有关图像的一些信息,但不需要显示它,并且我想管理该信息客户端。 我需要加载图像吗? 有没有其他方法可以获取这些信息?

【问题讨论】:

    标签: javascript jquery html image cross-browser


    【解决方案1】:

    你必须等待图片被加载:

    var img = new Image();
    img.onload = function() {
      var width = img.width;
      var height = img.height;
      $("#element").css("background-image", "url(" + img.src + ")");
    };
    img.src = "icon.png";
    

    由于必须从分配给“src”属性的 URL 中获取图像,因此该操作被异步处理。也就是说,您不能保证图像将可用于分配“src”属性后的语句。

    它有时会起作用,因为您的图像可能会被缓存。

    【讨论】:

    • 谢谢 :) 事实上,由于缓存的原因,我很难重现错误 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2010-11-27
    • 2016-11-28
    • 1970-01-01
    • 2010-12-15
    • 2021-08-05
    • 2011-12-13
    相关资源
    最近更新 更多