浏览器在处理图片时,图片下载是需要一定时间的。当图片还没有下载完时,使用js进行操作,如获取元素宽高将是0,因而某些情况下需要判断图片加载是否完毕,加载完毕后再执行js代码。
怎么判断呢?直观思路使用jQuery的ready()函数,
jQuery(function(){ //判断图片是否加载完成 });
事实上不行,jquery的ready只是dom的结构加载完毕,即认为加载完毕;而此时图片很可能没有加载完毕,宽高为0,视频或音频、动画等都基本未加载。
对应的,原生js的window.onload是指dom的生成和资源的加载,比如flash、图片完全加载出来后才执行onload;似乎可以,的确也可以,但期有一个显然的缺点,如果某一个图片很大迟迟加载不出,会阻止其它js的正常执行。
jQuery中有Deferred对象,可以基于Deferred实现一个和window.onload功能类似的,在其中进行图片加载完毕判断,直接贴出本人项目中成功实现的全部代码:
var imgdefereds=[]; jQuery('img').each(function(){ var dfd=jQuery.Deferred(); $(this).bind('load',function(){ dfd.resolve();//load执行代表图片加载完成 }).bind('error',function(){ //图片加载错误,加入错误处理 // dfd.resolve(); }); if(this.complete) {//complete属性为true,代表图片加载完成 dfd.resolve(); } imgdefereds.push(dfd); }) jQuery.when.apply(null,imgdefereds).done(function(){ adaptDivHeight();//图片全部加载完毕,自己的逻辑,修改div高度 });使用时只需要adaptDivHeight()替换为自己的函数即可,这样在所有的图片加载完毕后才会执行adaptDivHeight(),在adaptDivHeight()中判断图片高宽将是真实高宽。
下面说如何判断图片已经加载完毕,可能通过两种方式:
1. load事件:
所有浏览器都支持img的load事件,可以使用以下代码判断:
$('img').load(function(){ // 加载完成 });以上是单张图片判断,多张可以设置计算器;这段代码对于Firefox类浏览器及IE首次加载可以,当IE缓存图片后,总是从缓存文件里去拿,这样造成load方法根本不执行,只有新图片才会走load;上述代码中使用了load事件。
相关推荐
只要确保在图片加载完成之后再获取其尺寸即可。 在上述代码的基础上,如果希望减少代码量,可以进一步简化。例如,将图片加载和尺寸获取的代码封装在一个函数中,然后直接调用这个函数。 此外,需要注意的是,如果...
使用window.onload的优点在于它一次性加载完所有资源后再执行代码,无需再去监听readyState属性的变化。不过,window.onload也有一个缺点,即它只能绑定一个事件处理函数。如果需要在页面加载完毕后执行多个操作,则...
3. **JavaScript交互**:如果页面允许,可以通过执行JavaScript代码来判断页面是否准备好。例如,可以编写一个JavaScript函数检查所有图片是否加载完成,或者等待特定的DOM元素出现。然后,使用WebBrowser的`...
在Web开发中,确保在页面所有资源加载完成之后执行特定的JavaScript函数是非常常见的需求。网页的加载涉及HTML文档结构的解析、CSS样式的加载与应用、JavaScript脚本的下载与执行,以及图片、视频等其他资源的加载。...
本文将探讨如何在JavaScript中判断页面加载完成后执行预定的函数,以及使用监听器和`window.onload`事件来实现这一目标。 首先,传统的做法是在HTML元素中直接内联JavaScript,如通过`onclick`属性触发函数。例如:...
在IE浏览器中,判断图片加载成功是一个常见的需求,特别是在网页开发或者进行性能优化时。这个需求通常涉及到JavaScript的事件处理和浏览器兼容性问题。本文将深入探讨如何在IE中实现图片加载成功的判断,并提供相关...
在Delphi编程环境中,WebBrowser组件常常用于在应用程序中嵌入网页浏览功能。然而,如何准确判断WebBrowser组件是否已完全...这个方法适用于那些需要在网页加载完成后执行特定操作的情况,例如自动化测试、数据抓取等。
这通常用于执行一些需要依赖完整页面结构的操作,但其缺点是如果页面中有大量的图片或资源文件,页面就会在这些内容加载完成后才执行JavaScript代码,从而导致用户可能会等待较长时间才能看到最终的页面效果或交互...
在这个示例中,我们首先使用`$(document).ready()`确保在DOM完全加载后再执行代码。然后我们使用`$('img')`选择器选中页面中的所有图片元素,并使用`.load()`方法来监听图片加载完成事件。在`load`事件的回调函数中...
load事件是JavaScript中最直接的方式,当图片加载完成后触发。例如: ```javascript var img = document.querySelector('img'); img.onload = function() { // 图片加载完成后的代码 }; ``` 这种方法简单...
以下是使用onload事件判断图片加载完成的示例代码: ```html (this)" src="" style='display:none'/> <script type="text/javascript"> function get(ts) { ts.style.display='block'; // 显示图片 } ``` **...
页面加载完成后执行JavaScript代码是前端开发中常见的需求,主要目的是保证在执行JavaScript操作之前页面的DOM结构已经完全加载完毕,这样可以避免因DOM元素尚未加载完毕而导致的脚本错误。下面我将详细介绍如何让...
通过为图片元素添加一个onload事件处理器,我们可以在图片加载完成后执行相应的代码。例如: ```html ***"> img1.onload = function() { // 这里代码会在图片加载完成后执行 console.log('图片加载完成'); }; ...
本篇知识分享将向你介绍如何使用JavaScript来判断图片是否加载完成,以及相关的几种方法及其优缺点。 首先,最直接的方式是利用img标签自带的onload事件。onload事件会在图片完全加载完成后触发,我们可以在这个...
通过代码的逻辑处理,能够在不同类型的浏览器中正确地检测图片加载状态,并且在图片加载完成后及时更新网页上的内容,提升用户体验。 九、代码注释说明 代码中包含了大量的注释说明,这有助于其他开发者阅读和理解...
在前端开发中,判断页面是否加载完成是一个常见的需求,尤其是在需要在页面完全加载后执行某些操作,如表单提交、弹窗显示、数据请求等。JavaScript提供了一种方法来监听页面加载状态的变化,以便我们可以基于页面...
然而,为了实现更复杂的交互功能,如在父页面与`iframe`页面之间进行通信或者在`iframe`加载完成后执行某些操作,我们需要能够判断`iframe`内的页面是否已经完全加载。本文将详细介绍如何使用JavaScript来检测`...
在JavaScript中,正确判断图片是否加载完成是网页动态加载和展示图片时不可或缺的技能。这个问题在Web开发中经常遇到,特别是在处理用户上传的图片或远程图片资源时。本篇文章将详细探讨如何通过JavaScript来实现这...
由于图片滚动加载只会在滚动时执行,所以对于即时加入的图片将不会进行加载操作,此时你可以执行扩展方法loading()去实时执行一次加载方法 补充说明 影响范围:仅对滚动元素内包含data-url属性的img起效 起效条件:...