Javascript: отмена / остановка запросов изображения - PullRequest
41 голосов
/ 30 мая 2009

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

Ответы [ 5 ]

55 голосов
/ 24 сентября 2009

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

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

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

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

3 голосов
/ 10 ноября 2015

вот так.

$(img).attr('src','');
2 голосов
/ 30 мая 2009

Если вы используете 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 и отмените запрос.

window.onunload = function(){
  xhr.abort();
}
0 голосов
/ 22 октября 2009

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

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

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

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

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

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

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

0 голосов
/ 24 сентября 2009

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

редактировать

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...