加载图像后启动javascript的最快方法?
我有一部分代码依赖于知道页面上图像的宽度 如果我立即启动它(在加载图像后启动javascript的最快方法?,javascript,jquery,Javascript,Jquery,我有一部分代码依赖于知道页面上图像的宽度 如果我立即启动它(在$(function(){的顶部),它有时会不工作,因为图像还没有加载 如果我使用jquery(我已经在页面上的其他东西中使用它)在load()上激发,它永远不会激发。可能是因为图像在JS执行之前就已经加载了,或者是因为它被缓存了 $('#photo').load(function(){ alert('loaded'); }); //doesn't fire 如果我执行以下操作,它确实可以工作,但是在第二次获取图像时经过了明
$(function(){
的顶部),它有时会不工作,因为图像还没有加载
如果我使用jquery(我已经在页面上的其他东西中使用它)在load()上激发,它永远不会激发。可能是因为图像在JS执行之前就已经加载了,或者是因为它被缓存了
$('#photo').load(function(){
alert('loaded');
});
//doesn't fire
如果我执行以下操作,它确实可以工作,但是在第二次获取图像时经过了明显的延迟:
$('#photo').load(function(){
alert('loaded');
});
$('#photo').attr('src',$('#photo').attr('src')+'?'+new Date().getTime());
//fires, but is slow
当然,在2016年一定会有一个很好的方法来实现这一点?无论是在jquery还是vanilla JS中。你可以使用插件在图像加载后触发回调。作为奖励,你还可以获得懒散加载
$("img").unveil(200, function() {
$(this).load(function() {
// where you do your things... this = the image object
});
});
一旦你的图像被加载,你可以使用插件触发回调。作为奖励,你还可以得到懒散加载
$("img").unveil(200, function() {
$(this).load(function() {
// where you do your things... this = the image object
});
});
为什么不简单地使用图像的onLoad功能:
<img src="/path/to/image.jpg" onload="doStuff(this);" />
一旦图像加载,它就会触发。为什么不简单地使用图像的onLoad功能:
<img src="/path/to/image.jpg" onload="doStuff(this);" />
一旦图像加载,它就会触发。我正在使用以下命令:
$('<img />').one('load', function() {
// do stuff
}).attr('src', $('#photo').src);
这里的想法是,链接可以确保如果照片在缓存中,并且onload处理程序连接得太晚而无法捕获它,那么each(this.complete)部分将节省时间并触发onload
这些符合您对fast的定义吗?我使用以下方法:
$('<img />').one('load', function() {
// do stuff
}).attr('src', $('#photo').src);
这里的想法是,链接可以确保如果照片在缓存中,并且onload处理程序连接得太晚而无法捕获它,那么each(this.complete)部分将节省时间并触发onload
这些是否符合您对fast的定义?请提供一个“如果您使用document ready函数等待DOM完全加载怎么办?”(),或者如果您希望在图像加载后立即执行该操作,请参阅前面的SO帖子()请提供一个“如果您使用document ready函数等待DOM完全加载怎么办?”()或者,如果您想在图像加载后立即执行此操作,请参阅前一篇文章(),尽管它很糟糕,但我认为这是最好的解决方案!是的..有时一个人被jquery蒙蔽了双眼,甚至没有考虑好的旧解决方案:)不是jquery,更不用说避免在我的html中直接使用JS了。虽然这很可怕,但我认为这是最好的解决方案!是的……有时候人们被jquery蒙蔽了双眼,甚至不考虑好的旧解决方案:)不是jquery,而是避免在我的html中直接使用JS。添加更多代码很少是解决问题的好办法,imho。不过谢谢你的建议。添加更多代码很少是解决问题的好办法,imho。不过谢谢你的建议。