检测图像加载
是否有可能检测一次图像已经加载jQuery?
您可以使用.load()
事件处理程序,如下所示:
$("#myImg").load(function() { alert('I loaded!'); }).attr('src', 'myImage.jpg');
请确保在设置源代码之前将其附加,或者在附加处理程序以侦听它(例如,从caching加载)之前可能已经触发事件。
如果这是不可行的(绑定后设置src
),一定要检查它是否被加载并自己开火,如下所示:
$("#myImg").load(function() { alert('I loaded!'); }).each(function() { if(this.complete) $(this).load(); });
使用简单的Javascript就简单了:
// Create new image var img = new Image(); // Create var for image source var imageSrc = "http://example.com/blah.jpg"; // define what happens once the image is loaded. img.onload = function() { // Stuff to do after image load ( jQuery and all that ) // Within here you can make use of src=imageSrc, // knowing that it's been loaded. }; // Attach the source last. // The onload function will now trigger once it's loaded. img.src = imageSrc;
我也一直在研究这个很长一段时间,并发现这个插件奇妙的帮助: https : //github.com/desandro/imagesloaded
这似乎是一个很大的代码,但是…我发现没有其他方式来检查图像何时加载。
在('load')函数上使用jQuery是检查图像是否被加载的正确方法。 但请注意,如果图像已经在caching中,则on('load')函数将不起作用。
var myImage = $('#image_id'); //check if the image is already on cache if(myImage.prop('complete')){ //codes here }else{ /* Call the codes/function after the image is loaded */ myImage.on('load',function(){ //codes here }); }
用jquery很容易:
$('img').load(function(){ //do something });
如果尝试与:
$('tag')html().promise().done(function(){ //do something }) ;
但是不会检查图片是否加载。 如果代码被加载,那么就完成了。 否则,你可以检查代码是否完成,然后触发img加载函数,并检查图片是否真的加载。 所以我们做了两者的结合:
$('tag')html('<img src="'+pic+'" />').promise().done(function(){ $('img').load(function(){ //do something like show fadein etc... }); }) ;
我认为这可以帮助你一点:
$('img').error(function(){ $(this).attr( src : 'no_img.png'); })
所以,如果它加载 – 将显示原始图像。 在其他 – 将显示图像,其中包含事实与崩溃的图像或404 HTTP头。