Intereting Posts
Могу ли я масштабировать высоту div пропорционально ширине с помощью CSS? Не удалось выполнить вертикальное выравнивание HTML? Сделать страницу, чтобы указать браузеру не кэшировать / сохранять входные значения Является ли alt таким же, как alt = “”? jquery: как узнать, есть ли у меня это? использовать стиль, например span в textarea Невозможно реализовать привязную плавную прокрутку с помощью меню / содержимого canvasа jQuery обнаруживает и проверяет URL-адрес Неправильная практика добавления дополнительных атрибутов в HTML-элементы? Каково влияние эффективности использования бикубической интерполяции в IE? Избавьтесь от пространства под встроенным блоком image Как подсчитать количество символов в строке с использованием JavaScript Автозаполнение триггера без отправки формы нет запроса на favicon Размещение меток и ввода с использованием css

Как обновить относительный тег img src до абсолютного пути с помощью javascript

У меня есть веб-приложение, которое тянет канал RSS из внешнего ресурса. Некоторые из изображений, извлекаемых из корма, являются относительными путями, такими как /assets/images/image.jpg . Изображения с относительными путями в конечном итоге составляют 404, потому что они не обращаются к внешнему ресурсу, чтобы он был абсолютным путем, таким как externalsource.com/assets/images/image.jpg . Я хочу написать функцию javascript, которая собирает все tags img src на странице и гарантирует, что все они являются абсолютными путями. У меня нет проблем со сбором всех img srcs, но они не могут заменить их абсолютным URL-адресом. При печати img srcs URL-адрес ресурса, который вытягивает фид, применяется к URL-адресу. Как resource/assets/images/image.jpg

Вот что я имею до сих пор:

 var images = document.getElementsByTagName('img'); var srcList = []; for(var i = 0; i < images.length; i++) { var pattern = new RegExp('^https?:\/\/fiddle\.jshell\.net(\/)'); if (pattern.test(images[i].src)){ var sources = images[i].src; images[i].src = sources.replace("^https?:\/\/fiddle\.jshell\.net(\/)", "http://duo.com"); console.log(images[i].src); }else{ console.log("no match"); } } 

Я собираю все srcs, сравнивая их с регулярным выражением, чтобы увидеть, совпадает ли он с URL-адресом ресурса и заменяет его URL-адресом из внешнего ресурса. К сожалению, замена части URL не работает вообще. Это должен быть чистый javascript и не jquery.

Любая помощь действительно ценится!

Похоже, вы передали строку первому аргументу String#replace :

 images[i].src = sources.replace("^https?:\/\/fiddle\.jshell\.net(\/)", "http://duo.com") 

Вы, вероятно, хотели бы передать регулярное выражение (обратите внимание на использование / а не:; это представляет собой литерал регулярного выражения в JS):

 images[i].src = sources.replace(/^https?:\/\/fiddle\.jshell\.net(\/)/, "http://duo.com") 

Тем не менее, я бы посоветовал, что большая часть вашей логики цикла и тестирования сводится к одному вызову для replace в цикле forEach , например:

 [].forEach.call(document.getElementsByTagName('img'), function (image) { image.src = image.src.replace(/^https?:\/\/fiddle\.jshell\.net\//, 'http://duo.com/') console.log(image.src) })