将 image.src 设置为自身会导致 onLoad 触发吗?

Fix*_*ker 5 javascript dom dom-events

我似乎无法找到这个问题的明确答案......

假设我有一个对页面上图像的 JavaScript 引用,并且我将一个load事件处理程序绑定到该元素。例如,这样的事情:


超文本标记语言

<img id="myImage" src="http://example.com/image.jpg" />
Run Code Online (Sandbox Code Playgroud)

JavaScript

var $myImage = $('#myImage');
$myImage.load(function() {
    alert('Image loaded!')
});
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做:

var imageElem = $myImage[0];
imageElem.src = imageElem.src; // Re-assign the image source path
Run Code Online (Sandbox Code Playgroud)

...即使图像已经从服务器加载,load事件处理程序也会触发吗?在 Firefox 中似乎可以,但是依赖这种行为安全吗?

(我问的原因是我在 jQuery 插件中看到它用于检查所有图像何时加载。如果在load绑定事件处理程序之前加载图像,那么它不会触发,除非使用它重新触发上面的方法。)

Jud*_*ngo 4

设置 img.src 应该会触发加载,但有一些注意事项。根据 jQuery 自己关于 .load 事件的文档

与图像一起使用时加载事件的注意事项

开发人员尝试使用 .load() 快捷方式解决的一个常见挑战是在图像(或图像集合)完全加载时执行函数。有几个已知的警告需要注意。这些都是:

  • 它不能一致地、可靠地跨浏览器工作
  • 如果图像 src 设置为与之前相同的 src,则它不会在 WebKit 中正确触发
  • 它没有正确地冒泡 DOM 树
  • 可以停止触发已存在于浏览器缓存中的图像