Me gustaría cancelar una operación .load(), cuando la carga() no vuelve en 5 segundos. Si es así, mostraré un mensaje de error como 'lo siento, no hay imagen cargada'.Cómo cancelar un jquery.load()?
Lo que tengo es ...
... el manejo de tiempo de espera:
jQuery.fn.idle = function(time, postFunction){
var i = $(this);
i.queue(function(){
setTimeout(function(){
i.dequeue();
postFunction();
}, time);
});
return $(this);
};
... inicialización del mensaje de error de tiempo de espera:
var hasImage = false;
$('#errorMessage')
.idle(5000, function() {
if(!hasImage) {
// 1. cancel .load()
// 2. show error message
}
});
... la cargando imagen:
$('#myImage')
.attr('src', '/url/anypath/image.png')
.load(function(){
hasImage = true;
// do something...
});
Lo único que no pude entender es cómo cancelar la carga en ejecución() (si es posible).
Editar:
Otra forma: ¿Cómo evito que el método .load() para llamar a su función de devolución de llamada cuando se está volviendo?
fullware, gracias por su útil respuesta! Hay algo pequeño que corregir: tuve que reemplazar la línea "beforeSend (xhr) {" por "beforeSend: function (xhr) {" – Dirk