Как узнать, получаю ли я 404 ответ от атрибута src img? - PullRequest
0 голосов
/ 11 мая 2018

Я создаю веб-приложение AngularJS и в данный момент создаю форму, позволяющую пользователю размещать ссылки на видео на YouTube. У меня есть миниатюра, связанная с видео на YouTube, и когда пользователь вводит ссылку на YouTube, я извлекаю изображение из <code>https://img.youtube.com/vi/${videoId}/maxresdefault.jpg

Это входит в это:

<img src="{{element.video.thumb}}>

Итак, мое текущее решение:

element.video.thumb = `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`

Моя проблема в том, что не у всех видео на YouTube по этой ссылке доступен эскиз. Я хочу быть в состоянии определить, есть ли у видео это доступно или нет. Я замечаю, что я получаю ответ 404 в моей консоли, когда миниатюра недоступна. Поэтому я попытался проверить, существует ли миниатюра с помощью службы $ http. Я попробовал оба варианта ниже:

$http.get(`https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`)
$http.jsonp(`https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`,{jsonpCallbackparam: "callback"})

Первый дает мне ошибку CORS, а второй не работает, потому что MIME-тип ответа - image/jpeg и выдает ошибку при попытке выполнить обратный вызов.

Мой первый вопрос:

Почему назначение ссылки на атрибут src img извлекает ресурс без проблем, но попытка доступа к ресурсу с помощью ах HTTP-запроса дает ошибку CORS?

Мой второй вопрос:

Как я могу выполнить некоторый код, если я получаю ответ 404 после назначения атрибута img src?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

XMLHttpRequest используется в .get для установки изображения из браузера, поэтому выдается ошибка CORS.

В вашем запросе вам нужно запросить разрешение у целевого сервера, используя атрибут crossOrigin,

Вы видите: https://www.html5rocks.com/en/tutorials/cors/

0 голосов
/ 11 мая 2018

О вашем втором вопросе (и названии этого вопроса) должно быть решение использовать событие Ошибка .Используйте .addEventListener() для добавления необходимого EventListener.

...