Angular <img [src]="someURL"> Как я могу получить доступ к перенаправленному URL-адресу в моем коде?

В приложении Angular у меня есть пользовательский URL-адрес изображения src, например, https://source.unsplash.com/1600x900/?facebook, он перенаправляется на какое-то изображение, размещенное на их сервере.

В некоторых случаях URL-адрес результата будет перенаправлять на плохое изображение, например, https://source.unsplash.com/1600x900/?roblox будет перенаправлять на https://images.unsplash.com/source-404?fit=crop&fm=jpg&h=800&q=60&w=1200 каждый раз, когда для термина нет хорошего результата (например, в данном случае roblox был плохим термином).

Как я могу получить доступ к этому перенаправленному URL-адресу в своем коде?

Что я уже пробовал:

Я передаю HTMLInputElement в свой TypeScript с помощью <img [src] = "someFunctionReturningURL(t)" #t>. Внутри someFunctionReturningURL(t) я вызываю setTimeout (чтобы убедиться, что img полностью загрузил URL-адрес src) и проверяю, если t.src == "https://images.unsplash.com/source-404?fit=crop&fm=jpg&h=800&q=60&w=1200", но проблема в том, что t.src по-прежнему содержит исходную ненаправленную ссылку https://source.unsplash.com/1600x900/?roblox, а не ссылку, на которую она фактически перенаправляется!

Перенаправленный запрос изображения не приводит к обновлению атрибута src элемента DOM.

Terry 08.04.2019 23:18

Вы можете сделать ручной запрос к URL-адресу и проверить, куда вы перенаправлены, а затем установить src с окончательным URL-адресом.

arieljuod 08.04.2019 23:19

Я попробовал ссылку, которую прислал Терри, это хороший хак для моей конкретной ситуации, поскольку при плохом URL-адресе он перенаправлял бы на изображение шириной 1200 вместо 1600, как я просил, поэтому я мог сразу сказать, если это плохо. Но приведенный ниже ответ более универсален и получает фактический URL-адрес перенаправления.

Arshaan 09.04.2019 00:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
1 053
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать метод fetch, чтобы получить перенаправленный URL-адрес, а затем установить его в атрибуте src:

fetch("https://source.unsplash.com/1600x900/?facebook")
  .then(res => {
    if (res.url) {
      this.imageSrc = res.url;
      console.info(this.imageSrc);
    }
  });

Пример на codeandbox

Другие вопросы по теме