JS: извлечение URL-адресов атрибутов href и src из DOM как абсолютных

Я использую JQuery для извлечения src и href из элементов в DOM следующим образом:

var mysrc;
$('img[src]').each(function (index) {
   mysrc = $(this).attr('src');
   // convert relative path to absolute url
});

Однако многие из этих путей к изображениям или в ссылке href являются относительными, а не абсолютными. Иногда они запускаются из корневого веб-каталога, например: /blah/img.jpg, а затем идут вверх или вниз по одному каталогу: ../blah/img.jpg. Я хотел бы сделать все эти пути абсолютными URL-адресами, но я не нашел для этого скрипта. Я знаю, как извлечь хост данной страницы из этого местоположения, но тогда мне не хватает всей логики, которая преобразовывала бы эти относительные пути в абсолютные URL-адреса. Любая идея, где я мог бы найти что-то для этого в Javascript / JQuery, или как мне поступить.

Спасибо за вашу помощь,


person Loic Duros    schedule 02.11.2011    source источник


Ответы (2)


.prop() возвращает вычисленное значение свойства, то есть абсолютный путь.
Вместо использования метода jQuery вы также можете использовать простой this.src.

$('img[src]').each(function (index) {
   // var mysrc = $(this).prop('src');  //<-- jQuery
   var mysrc = this.src;
   // Why do you want to get the absolute path, by the way?
});
person Rob W    schedule 02.11.2011
comment
Прохладный! Спасибо. Фактически обнаружил, что это тоже будет работать: $ ('# your_img'). Get (0) .src - но это, вероятно, то же самое, верно? - person Loic Duros; 02.11.2011
comment
@Loic. .get(0) возвращает первый соответствующий элемент DOM объекта jQuery. Итак, $(this).get(0) === this. - person Rob W; 02.11.2011

Вы, вероятно, захотите получить контекст приложения - я не думаю, что он доступен в javascript. Хотя вы можете знать это по каждому приложению.

В JSP вы можете получить такой контекст:

var contextPath = "‹% = request.getContextPath ()%> ";

другие серверные языки должны иметь аналогичные конструкции. Имея контекст, вы можете сформировать абсолютный путь, например

Абсолютный путь = window.location - contextPath + relativeURL;

Итак, если ваш URL

http://mysite.com/foo/bar, а контекст - http://mysite.com/foo/, а относительный путь -" ../somedir/mypic.jpg ", тогда абсолютный путь будет

/bar/../somedir/mypic.jpg

person Roman Goyenko    schedule 02.11.2011