Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载图像后启动javascript的最快方法?_Javascript_Jquery - Fatal编程技术网

加载图像后启动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。不过谢谢你的建议。