Есть ли способ узнать, доступен ли ресурс на сервере с помощью javascript? Например, у меня есть изображения 1.jpg - 5.jpg, загруженные на страницу html. Я хотел бы каждую минуту вызывать функцию JavaScript, которая примерно выполняла бы следующий рабочий код ...
if "../imgs/6.jpg" exists:
var nImg = document.createElement("img6");
nImg.src = "../imgs/6.jpg";
Мысли? Спасибо!
javascript
0xhughes
источник
источник
fileExists
что будет лучше, потому что эта функция не проверяет, существует ли изображение на сервере. Он проверяет, доступен ли файл с сервера. Нет проверки, действительно ли этот файл является изображением. Это может быть .pdf, .html, какой-нибудь случайный файл, переименованный в * .jpg или * .png. Если что-то заканчивается на .jpg, это не значит, что это 100% изображение :)Image
объекта не страдает этим ограничением. Единственное преимущество этого заключается в том, что на самом деле он не загружает изображение.Вы можете использовать основной способ работы предварительных загрузчиков изображений, чтобы проверить, существует ли изображение.
JSFiddle
источник
return
утверждением, как @ajtrichards в первой части его ответа.Вы можете просто проверить, загружается ли изображение или нет, используя встроенные события, которые предусмотрены для всех изображений.
События
onload
иonerror
сообщат вам, успешно ли загружено изображение или произошла ошибка:источник
error
обработчик.Если кто-то заходит на эту страницу, чтобы сделать это в клиенте на основе React , вы можете сделать что-то вроде приведенного ниже, оригинального ответа, предоставленного Софией Альперт из команды React здесь
источник
Более эффективный и современный подход - использовать ES6 Fetch API, чтобы проверить, существует ли изображение или нет:
Убедитесь, что вы либо делаете запросы с одинаковым источником, либо на сервере включен CORS.
источник
Если вы создаете тег изображения и добавляете его в DOM, должно срабатывать событие onload или onerror. Если возникает ошибка onerror, изображение не существует на сервере.
источник
Вы можете вызвать эту функцию JS, чтобы проверить, существует ли файл на сервере:
источник
В основном это обещанная версия ответов @espascarello и @adeneo с резервным параметром:
Примечание. Мне лично может понравиться
fetch
решение больше, но у него есть недостаток - если ваш сервер настроен определенным образом, он может возвращать 200/304, даже если ваш файл не существует. Это, с другой стороны, сработает.источник
fetch
самом деле, вы можете использоватьok
свойствоresponse
объекта, чтобы проверить, был ли запрос успешным или нет:fetch(url).then(res => {if(res.ok){ /*exist*/} else {/*not exist*/}});
background-image: url('/a/broken/url')
дает мне200
иok
(Chrome 74).Вы можете сделать это с помощью своих axios, установив относительный путь к соответствующей папке изображений. Я сделал это для получения файла json. Вы можете попробовать тот же метод для файла изображения, вы можете сослаться на эти примеры
Если вы уже установили экземпляр axios с baseurl в качестве сервера в другом домене, вам придется использовать полный путь к статическому файловому серверу, на котором вы развертываете веб-приложение.
Если изображение найдено, ответ будет 200, а если нет - 404.
Кроме того, если файл изображения присутствует в папке с ресурсами внутри src, вы можете выполнить требование, получить путь и выполнить вышеуказанный вызов с этим путем.
источник
Это отлично работает:
источник
Вы можете обратиться по этой ссылке, чтобы проверить, существует ли файл изображения с помощью JavaScript.
источник