когда я помещаю тэг img, я динамически создаю атрибут src. Есть ли способ тестирования, если src (путь, где находится изображение) фактически существует с javascript, чтобы избежать получения:
когда я помещаю тэг img, я динамически создаю атрибут src. Есть ли способ тестирования, если src (путь, где находится изображение) фактически существует с javascript, чтобы избежать получения:
Вы можете использовать событие error
:
var im = document.getElementById('imageID'); // or select based on classes
im.onerror = function(){
// image not found or change src like this as default image:
im.src = 'new path';
};
Встроенная версия:
<img src="whatever" onError="this.src = 'new default path'" />
или
<img src="whatever" onError="doSomething();" />
<img>
поддерживает эти события:
abort
(onAbort)error
(onError)load
(onLoad)Дополнительная информация:
вы можете сделать предыдущий вызов ajax (с помощью метода head
) и посмотреть код возврата сервера
или вы можете использовать событие onerror
для изменения URL-адреса или его скрытия, например.
<img src="notexist.jpg" onerror="this.style.visibility = 'hidden'">
(Я использовал встроенный атрибут, чтобы объяснить идею)
Если вы создаете src динамически с помощью javascript, вы можете использовать это:
var obj = new Image();
obj.src = "http://www.javatpoint.com/images/javascript/javascript_logo.png";
if (obj.complete) {
alert('worked');
} else {
alert('doesnt work');
}
Вы приближаетесь к этому неправильно.
Когда вы создаете свои ссылки со стороны сервера script, проверьте, существует ли файл или нет (например, с помощью file_exists()
в PHP).
Вы не должны полагаться на JavaScript, когда можете сделать это на стороне сервера, так как JavaScript может быть изменен и отключен.
Спросите себя, как вы генерируете атрибуты src=
и проверяете, существует ли файл или нет, и укажите альтернативу.