获取图像信息的最佳做法

gio*_*ine 1 html javascript jquery image cross-browser

我尝试使用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...
Run Code Online (Sandbox Code Playgroud)

它大部分时间都有效,但我发现有时"宽度"和"高度"设置为0.做一些搜索我发现图像加载是一个异步作业,所以碰巧我试图读取属性时它是仍未加载.我发现有一个onLoad事件可以用来在加载图像时指定一个回调函数.

我想知道这是否是做这些事情的最佳方式.例如,假设我只需要一些关于图像的信息,但我不需要显示它,我想管理那个信息客户端.我需要加载图片吗?是否有其他方式来获取此类信息?

Poi*_*nty 6

您必须等待加载图像:

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";
Run Code Online (Sandbox Code Playgroud)

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

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