Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как проверить загружены ли все картинки браузером (https://javascript.ru/forum/jquery/1974-kak-proverit-zagruzheny-li-vse-kartinki-brauzerom.html)

Aderba 13.10.2008 17:24

Как проверить загружены ли все картинки браузером
 
Подскажите пожалуйста мне нужно проверить загружены ли все картинки браузером с помощью javascript, желательно jQuery. Мне предлогали вариант ставить на событие onload у картинки флаг, если загрузилась, то флаг равен истине. мне такой вариант не подходит. Мне нужно просто определить все ли браузер загрузил?

Андрей Параничев 13.10.2008 17:35

Событие load окна документа срабатывает, когда все элементы страницы подгружены - DOM, картинки, фреймы и так далее. Может подойдет такой вариант:
$(window).bind('load', function() { /* ... */});

Aderba 13.10.2008 17:41

так, ага, а если у меня с помощью аякса поевляеться плавающий див, и в нем вот эти самые картинки, то пойдет, что вы предложили?

Андрей Параничев 13.10.2008 17:54

Нет, тогда только событие load на всех элементах img внутри дива.

Янв 24.04.2009 17:38

Вариантов много. Очень много. Пример - первый вариант самый простой, но второй изящны
 
Вар. 1.

var initContent = function () {
...
}

window.onload = initContent;

Вар. 2.

var ie = (navigator.appName == 'Microsoft Internet Explorer') ? true : false;

var initContent = function () {
... // Some code.
if (ie) {
window.detachEvent ('onload', initContent);
} else {
window.removeEventListener ('load', initContent, false);
}
}

if (ie) {
window.attachEvent ('onload', initContent);
} else {
window.addEventListener ('load', initContent, false);
}

Янв 24.04.2009 17:41

Или же вот такой геморрой:
 
function checkImage () {
var img = document.getElementsByTagName ('IMG');
var c = 0;
while (img[c]) {
if (!img[c].complete) return false;
}
unsetInterval (i);
... // Some initiation code.
}

var i = setInterval ('checkImage ()', 10);

Янв 24.04.2009 17:43

Еже ли вопрос идет об аяксе -
 
как раз подойдет последний вариант от меня под названием геморрой...

x-yuri 24.04.2009 20:05

я бы постарался избежать цикла, в котором ожидается загрузка изображений

egik 28.05.2014 12:37

для того чтобы найти пустое изображение и заменить его на стандартную картинку можно использовать следующее
$("img").error(function () {
$(this).unbind("error").attr("src", "broken.gif");
});

Vlasenko Fedor 28.05.2014 18:43

Цитата:

Сообщение от egik (Сообщение 313792)
для того чтобы найти пустое изображение и заменить его на стандартную картинку можно использовать следующее

в файл .htaccess добавляем

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} \.(gif|jpg|jpeg|png)$
RewriteRule .* noimage.jpg [L]

таким образом если изображение не будет найдено, то отобразится заглушка noimage.jpg, которая в данном случае лежит в этой же папке где и .htaccess

devote 29.05.2014 10:49

Poznakomlus,
не все пользуются апачем, да и картинка может стать недоступна по разным причинам. Тот же сервер не отдал ее до конца, или тот же сервер просто глюканул или тот же noimage.jpg не смог отдать или еще чего... Поэтому такие вещи все же делать лучше на клиенте.

Vlasenko Fedor 29.05.2014 12:02

devote,
про апач это понятно. А вот с остальным не согласен. Посмотри сам на загрузку страниц при разных решениях. А также подумай как они влияют на загрузку сервера.

devote 29.05.2014 12:31

Цитата:

Сообщение от Poznakomlus
А вот с остальным не согласен. Посмотри сам на загрузку страниц при разных решениях. А также подумай как они влияют на загрузку сервера.

а причем тут влияние загрузки сервера? я не это имел ввиду, я имел ввиду то, что сервер может упасть/отвалиться или у юзера тырнет рубанет или вообще сайт картинки грузит не со своего домена... (ты об этом не думал? Это все не с балды сказано, а испытано на собственном опыте). Поэтому проверять окончание загрузки/не загрузки ресурсов лучше на клиенте.

Vlasenko Fedor 29.05.2014 14:18

Цитата:

Поэтому проверять окончание загрузки/не загрузки ресурсов лучше на клиенте.
При этом видеть ошибку о не возможности загрузки ресурса :)
Посмотри заголовки какие у тебя в вкладке сеть
И поисковики так же ошибку будут видеть. На комбинированную проверку согласен.


Часовой пояс GMT +3, время: 05:51.