У меня есть сайт, который сильно использует Ajax. Иногда мне нужно загружать большие файлы изображений на страницу для пользователя. Мой вопрос в том, когда эти большие файлы изображений загружаются, есть ли способ их остановить, если, скажем, пользователь переходит от страницы, отображающей изображение? Спасибо.
Javascript: Отменить/Остановить запросы изображения
Ответ 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.