Я загружаю набор изображений с расширением .jpg, но некоторые из этих изображений на самом деле являются файлами .png.
Я хочу изменить URL-адрес с помощью метода replace, чтобы обновить строку URL-адреса с .jpg на .png, чтобы избежать статуса ошибки 404.
Эти изображения представляют шаблон html с использованием только javascript.
Я выполнил следующие шаги:
1
Пытаюсь загрузить образ с помощью оператора ||.
module.exports = (data) => {
return `
<img class='img-circle' src='${data.metadata.image || data.metadata.image.replace('.jpg', '.png'}' />
`
}
2
Я нашел пакет url-exists. Поэтому я попытался создать функцию, которая проверяет, существует ли URL-адрес, если нет, заменить расширение изображения
const urlExists = require('url-exists')
module.exports = (data) => {
// function
function updateUrl (url) {
urlExists(url, (err, res) => {
if (res === true) {
return url
} else {
return url.replace('.jpg', '.png')
}
})
}
return `
<img class='img-circle' src='${updateUrl(data.metadata.image)} />
`
}
3
Я нашел этот ответ, который определяет, существует ли URL-адрес: https://stackoverflow.com/a/10926978/6005062, поэтому я попытался создать другую функцию для получения ответа с измененным URL-адресом.
module.exports = (data) => {
// function
function updateUrl (url) {
let request = new XMLHttpRequest()
request.open('GET', url, true)
request.onreadystatechange = function() {
if (request.readyState === 4) {
if (request.status === 404) {
url = url.replace('.jpg', '.png')
}
}
}
return url
}
return `
<img class='img-circle' src='${updateUrl(data.metadata.image)}' />
`
}
Любой из этих методов показывает новый URL. Как я могу изменить URL-адрес в javascript, если он не существует?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


для обработки URL-адреса с ошибкой вы можете использовать это
<img class='img-circle' src='${updateUrl(data.metadata.image)} onerror = "this.src='NEW-URL'"/>
Превосходно. Спасибо