更改img src属性是否会发出任何发射器?

Does changing an img src attribute emit any emitters?

本文关键字:任何 发射器 img src 属性 是否 更改      更新时间:2023-09-26

我在一个页面上工作,其中有不同大小的图像,我想改变父div的大小根据新的图像的高度。

我将inner, viewOneviewTwo设置为全局变量,我的代码如下:

  viewOne.src = 'path/to/newImage.png';
  viewTwo.src = 'path/to/otherImage.png';
  inner = document.getElementById('innerWindow'); // Parent Div
  viewOne = document.getElementById('viewImgOne'); // Image Object
  viewTwo = document.getElementById('viewImgTwo'); // Image Object
  if(viewOne.clientHeight >= viewTwo.clientHeight) {
    inner.style.height = viewOne.clientHeight + "px";
  } else {
    inner.style.height = viewTwo.clientHeight + "px";
  };

父div在更改图像路径后并不总是正确地调整自己的大小,因此div底部可能会有几百个像素剩余,而这些像素本来不应该在那里。

如果浏览器窗口发生变化,我也有一个window.onresize函数来调整div的大小,并且它按预期工作。

是否有办法观看src,并在图像完全加载后运行调整大小功能?

解决此问题的一种方法是为所有图像绑定.load事件,然后在src更改后,您将知道图像何时完成加载。我不确定是否有更直接的方法来观察src的变化。但是,为了使其一致工作,您需要在任何内容触及image元素的.src.

之前绑定.load。

如果你是动态创建图像元素,这应该不是一个问题,或者如果你是重复使用相同的图像标签一遍又一遍,这应该不是一个问题(除了最初的第一次加载在页面加载,但你可能不需要担心这个?)