Javascript: Отменить/Остановить запросы изображения

У меня есть сайт, который сильно использует Ajax. Иногда мне нужно загружать большие файлы изображений на страницу для пользователя. Мой вопрос в том, когда эти большие файлы изображений загружаются, есть ли способ их остановить, если, скажем, пользователь переходит от страницы, отображающей изображение? Спасибо.

Ответ 1

У меня была одна и та же проблема, когда пользователи быстро выгружали (ajax) результаты поиска, браузер все еще пытался загрузить изображения профиля для каждой страницы, а не только текущей. Этот код работал у меня, вызывал событие подкачки непосредственно перед запуском нового поиска:

//cancel image downloads
if(window.stop !== undefined)
{
     window.stop();
}
else if(document.execCommand !== undefined)
{
     document.execCommand("Stop", false);
}

По сути, это похоже на нажатие кнопки "Стоп" в браузере.

Протестировано в IE, FireFox, Chrome, Opera и Safari

Ответ 2

как это.

$(img).attr('src','');

Ответ 3

Предполагая, что вы используете ajax для загрузки изображений, вы можете просто прервать запрос в событии window.onunload. Объявите глобальную переменную для объекта XMLHttpRequest, который вы используете.

var xhr;
//if using the XMLHttpRequest object directly
//you may already be doing something like this
function getImage(...){
  xhr = new XMLHttpRequest();
  xhr.open(....);
}

если вы используете jQuery, вы можете назначить возвращаемое значение вызова $.ajax() или $.get для переменной xhr.

xhr = $.ajax(.....);

Обработайте окно.нагрузите и прервите запрос.

window.onunload = function(){
  xhr.abort();
}

Ответ 4

Перенос тега SRC на другое изображение не работает в IE7, он продолжает пытаться загрузить первое изображение.

Вот настройка:

Я создал обработчик HTTP, который имеет тип JPEG. Он содержит код, который никогда не завершает выполнение. Поэтому someImage.src= myhandler.ashx будет постоянно сидеть там, пока не истечет время.

В середине этого нажмите еще одну кнопку, которая переназначает изображение в маленький файл изображения: someImage.src= small.jpg

Запрос myhandler.ashx не заканчивается, хотя мы переназначили src.

Кроме того, если вы действительно удалите node someImage.parentNode.removeChild(someImage), все еще пытается загрузить myhandler.ashx

Протестировано с помощью IE7 и отслеживается с помощью HTTP Watch Pro.

Ответ 5

Решение для бедных mans было бы просто установить свойство SRC тега изображения на пустую строку или указать его на виджет.

изменить

Увидел ваш комментарий, удивляясь, что он не работает с изменением свойства SRC на пустое... попробуйте использовать blank.gif или что-то в этом роде.

Если это не работает, вы можете быть ограничены архитектурой браузера, то есть вы S.O.L.