![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| svch |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Добрый день !
Есть n-дивов. При загрузке страницы я хочу грузить в них фоновые картинки.
или
В обоих случаях бекграунды не отображаются, пока скрипт не загрузит все картинки. А если дивов - 100, то ждать приходится очень долго. Хотелось бы при загрузке сразу его отображать. Вариант:
не подходит, т.к. на странице должна быть кнопка, которая отменяет все активные запросы. Подскажите, в чем может быть дело ? Большое спасибо. С уважением, Сергей. |
||||||
|
|||||||
| Arantir |
|
||||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 3 Всего: 55 |
Дело в том, что запросы, посылаемые браузером для ajax и для картинки в background получаются разными и кешируются отдельно. Браузер кеширует не саму картинку, как набор бинарных данных. Он ориентируется на структуру запроса. Абсолютно одна и та же картинка по двум разным URL будет загружена браузером дважды (даже если оба URL указывают на тот же файл на сервере) и кешироваться они будуть отдельно. Но... в принципе можно схитрить и сделать запросы одинаковыми...
Теперь все заголовки запроса (сксорее всего) сойдутся с обычным запросом картинки. Должно получится задуманное: ![]() Но вообще более надежно делать вот так:
Во-первых, тут только один запрос. При установке background браузер второй раз запрос посылать не будет, ибо для одного и того же url картинки делается только один запрос и потом иcпользуется для всех картинок с этим url. Во-вторых, из-за первого это кроссбраузерно. Ибо через ajax различия в заголовках между ajax-запросом и запросом картинки могут быть разными у разных браузеров или зависеть от настроек пользователя. Это сообщение отредактировал(а) Arantir - 6.6.2013, 20:48 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||
|
|||||
| svch |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Я пробовал сделать вот так:
Но дело в том, что я не знаю, как остановить такую загрузку. Вообще у меня вот какая задача: - на странице есть n-блоков - при загрузке всем блокам загрузить разные background-ы - сделать кнопку, при нажатии на которую все загрузки останавливаются Если делать загрузку фонового рисунка через
то можно в код вставить
и сделать кнопку, при нажатии на которую все эти аяксы останавливаются
Это все прекрасно работает, но фоновые рисунки на странице появляются только после окончания всех загрузок. Если же сделать через
то картинки появляются по мере загрузки, т.е. так, как мне необходимо, но при этом - каким образом можно при необходимости остановить текущие загрузки фоновых рисунков ? С уважением, Сергей. |
||||||||||
|
|||||||||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 3 Всего: 55 |
Все браузеры поддерживают свойство complete у картинки, которое указывает на то, загружена ли картинка. По нему и можно остановить все недогруженные картинки, установив им в src пустую строку (или какую-то картинку-заменитель).
Просто надо созданные объекты Image хранить в массиве, чтобы можно было их перебрать. Что-то вроде этого:
-------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Что-то не получается у меня остановить их ф-ей "stop()"
Все равно картинки продолжают грузиться. С уважением, Сергей. |
|||
|
||||
| Arantir |
|
||||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 3 Всего: 55 |
Хм... Похоже браузеры не умеют останавливать загрузку конкретной картинки/ресурса из-под JS.
Есть метод
В ином случае можно картинки загружать по очереди и сделать флажок для остановки:
-------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Применение библиотек | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |