检测 jQuery 1.8+ 中的图像加载 - 自弃用以来替代 load()

Posted

技术标签:

【中文标题】检测 jQuery 1.8+ 中的图像加载 - 自弃用以来替代 load()【英文标题】:Detect image load in jQuery 1.8+ - alternative to load() since deprecation 【发布时间】:2013-01-24 18:18:42 【问题描述】:

说明

出于我欣赏的原因,从 jQuery 1.8 开始,load 事件已被弃用,但是,仍然可以通过使用某些变通方法来检测图像是否已加载(即使它在缓存中) . 因此,该事件的弃用实际上是非常令人恼火的,因为它至少作为检测图像何时完成加载到页面上的起点。

尽管如此,它已被弃用,因此我提出这个问题是希望我能找到答案,从而帮助我和可能很快遇到相同问题的其他人。

一个例子(在 jQuery 1.8 之前)

不使用插件(因为这应该可以用很少的代码完成,因此不需要插件),我想在我的页面上的每个图像加载时调用一个函数。

类似这样的东西(由于弃用,这将不起作用):

$('#mn_content .column').on('load','img',function()
    console.log('loaded');  
)

我的问题

load 事件不存在的情况下,有人知道如何实现这一点吗?

请注意:如果(现在)实现这一点的唯一方法是使用 javascript new Image 对象,那么请不要浪费您的时间来帮助我因为其他人比我更需要你的帮助。我能够编写这段代码,只是对于如此基本的东西来说似乎有点啰嗦。

我只是问了这个问题,以确保不使用 Javascript image 对象就无法实现这一目标

我当然会非常感谢任何帮助,我只是不想让你在其他人更需要你帮助的时候花太多时间在我身上。 :-)

【问题讨论】:

您的 .each 显然只迭代了 document 而不是委托目标。 @FabrícioMatté 这是一个很好的观点,请忽略它。那不是我使用的代码,我是为了说明目的而编写的,并没有对其进行测试。但很明显,+1 :-) load() method deprecated? 的可能重复项 【参考方案1】:

load 事件仍然存在,只是不能再使用.load 绑定到它。您的事件委托示例应继续适用于 1.9 和 2.0(如果您正在测试的浏览器支持加载事件的冒泡)

我个人仍然会use the new Image method,因为我不相信所有浏览器都会正确地冒泡加载事件。

编辑:对不起,如果我不清楚,我的意思是加载事件仍然存在,你只需要正确绑定它。由于加载事件不会在所有浏览器中冒泡(如果在任何浏览器中?),您必须将事件直接绑定到图像。我建议使用您要求我们不要为您提供示例的方法。

【讨论】:

我认为它可能是,但由于某种原因它在我的脚本中不起作用。我已经调试了我的代码,并不是要调试很多东西,但我无法让它工作。我将用我的实际代码更新我的问题。感谢您的回答:-) 我同意浏览器不一定都能正确冒泡,这就是为什么我有 complete 后备 查看对您问题的评论,您在.each() 上的逻辑不正确,:) 而且,正如 Kevin 所说,如果浏览器没有冒泡 load 事件,您的委托处理程序将不会触发。 @KevinB 是的,但只是因为我没有测试该代码。这纯粹是为了说明目的。我将发布我实际使用的代码:-)

以上是关于检测 jQuery 1.8+ 中的图像加载 - 自弃用以来替代 load()的主要内容,如果未能解决你的问题,请参考以下文章

检测何时通过 ajax 加载资源

使用 javascript/jquery 检测 Asp.Net 表单是不是有效

jQuery 或 Javascript 检查图像是不是加载

带有第一个 div 的 jQuery 自定义手风琴在初始加载时打开 - 修改箭头图像的问题

如何检测何时加载通过道具提供的图像并更改 React 中的状态?

使用 jQuery 预加载目录中的所有图像