Тема: Перевірити існування картинки

Я знайшов один спосіб, але він мені не підходить
Як тільки відбувається подія onerror, зразу ж викликається функція для її обробки
HTML

<img src="whatever" id="imageID" />

JS

    var im = document.getElementById('imageID');
    im.onerror = function () { alert('error');};

В мене є самовикликаюча функція, вона бере всі елементи через querySelectorAll, і в циклі їх обробляє. Мені потрібно перевірити існування картинки в самому циклі

(function ()
    {
    var allImgTag = document.querySelectorAll('img');
    for(var i = 0; i < allImgTag.length; i++)
        if(allImgTag[i].event.error)//ТУТ<<<<<<<----------------
        {
            alert('Error');
        }
    }());

Як перевірити існування картинки ?

2 Востаннє редагувалося Monolith (30.09.2017 18:00:18)

Re: Перевірити існування картинки

Як варіант, можна перевіряти висоту картинки:

var image = new Image();
image.src = 'image.jpg'; // розташування картинки
if ( image.height === 0 ) {
  // значить щось не так
}
Подякували: Betterthanyou, NaharD, /KIT\3

3 Востаннє редагувалося Betterthanyou (30.09.2017 18:02:56)

Re: Перевірити існування картинки

Monolith написав:

Як варіант, можна перевіряти висоту картинки:

var image = new Image();
image.src = 'image.jpg'; // розташування картинки
if ( image.height === 0 ) {
  // значить щось не так
}

В браузері IE8 не працює, можливо є ще варіант ?

4 Востаннє редагувалося ostap34PHP (30.09.2017 20:51:47)

Re: Перевірити існування картинки

Прихований текст
Betterthanyou написав:
Monolith написав:

Як варіант, можна перевіряти висоту картинки:

var image = new Image();
image.src = 'image.jpg'; // розташування картинки
if ( image.height === 0 ) {
  // значить щось не так
}

В браузері IE8 не працює, можливо є ще варіант ?

В мене теж в Netscape Navigator 4.08 не працює  :(

Подякували: koala, Betterthanyou, 221VOLT3

5

Re: Перевірити існування картинки

завантаження картинки починається після присвоєння src, але воно асинхронне, вам треба приєднати до image слухач івенту, воно маж зваться якось чи то load, чи то onload, і вже там запитувати height
до речі, чого це воно не працює в IE8 ?

Подякували: Betterthanyou, leofun012

6

Re: Перевірити існування картинки

Якось так:

im.onerror = function () { this.have_error = true;};
...
if(allImgTag[i].have_error)//ТУТ<<<<<<<----------------
        {
            alert('Error');
        }
Подякували: Betterthanyou, Monolith2

7 Востаннє редагувалося Betterthanyou (30.09.2017 23:55:11)

Re: Перевірити існування картинки

Робить, але потрібно тоді замінити самовикликаючу функцію на onload подію, тому що спочатку викликається самовикликаюча функція, потім onerror. Мені це підходить, тема закрита

var bodyId = document.getElementById('bodyId');
    bodyId.onload = function ()
    {
        var allImgTag = document.querySelectorAll('img');
        for(var i = 0; i < allImgTag.length; i++)
        if(allImgTag[i].have_error)//ТУТ<<<<<<<----------------
        {
            alert('Error');
        }
    }
FakiNyan написав:

до речі, чого це воно не працює в IE8 ?

Сам не знаю, в Chrome і Opera робить, а в IE8 ні

ostap34PHP написав:

В мене теж в Netscape Navigator 4.08 не працює  :(

Я розумію вашу критику, але я роблю з Wordpress який підтримує IE, там використовується HTML5 Shiv для підтримки, тому я теж мушу підтримувати IE

8

Re: Перевірити існування картинки

може ie8 не підтримує new Image() ?
тоді спробуйте через createElement може?

Подякували: Betterthanyou, 221VOLT2

9

Re: Перевірити існування картинки

FakiNyan написав:

може ie8 не підтримує new Image() ?
тоді спробуйте через createElement може?

Ні так теж не працює, я думаю в IE8 не хоче працювати "image.height === 0". Дякую, вже не потрібні інші способи,
той спосіб що запропонував koala підходить.

Подякували: Monolith1