Получение относительного изображения src с помощью jQuery - PullRequest
7 голосов
/ 04 июня 2009

У меня есть теги изображений, которые выглядят так:

<img src="/path/to/my/image.jpg" />

Но когда я получаю доступ к биту src с помощью jQuery, jQuery возвращает мне:

http://example.com/path/to/my/image.jpg

Это вызывает проблемы в некоторых сравнениях, которые я делаю. Я не хочу изменять пути к своим изображениям для использования абсолютных URL.

Есть какие-нибудь идеи относительно того, как я могу получить абсолютный URL-адрес из пути к изображению (это может быть не так просто, как объединение домена - поскольку URL-адреса иногда могут быть абсолютными), или получить путь, который я указал в HTML? В любом случае мне нужно, чтобы они совпадали.

Редактировать за комментарий от activa

На самом деле не так много кода jQuery для публикации, я использую плагин cycle , а в функции onbefore я просто вызываю next.src. Моего jQuery и JavaScript foo недостаточно, чтобы по-настоящему понять, что делает плагин цикла для генерации next - я думаю, что это элемент DOM для следующего циклического изображения, если вы знакомы с тем, что делает цикл.

Мой тег изображения на самом деле такой:

<img src="/site_media/photologue/photos/cache/6927d406810ee9750a754606dcb61d28.jpg" alt="" class="landscape slideshow-image-1" />

и в моей onbefore функции этот код:

alert(next.src);

приводит к предупреждению с:

http://127.0.0.1:8000/site_media/photologue/photos/cache/6927d406810ee9750a754606dcb61d28.jpg

Ответы [ 4 ]

18 голосов
/ 04 июня 2009

$("img").attr("src") возвращает действительное значение атрибута src (пробовал в FF3 и IE7)

Итак, когда у вас есть

<img src="http://example.com/path/to/my/image.jpg" />

вернется

http://example.com/path/to/my/image.jpg

А когда у вас есть

<img src="/path/to/my/image.jpg" />

вернется

/path/to/my/image.jpg

Изменить после редактирования вопроса

Похоже, вы можете попробовать

$(next).attr("src")
1 голос
/ 04 июня 2009

Чтобы всегда получить полный разрешенный путь, используйте Element.src, а не Element.getAttribute("src") (что эквивалентно attr ("src")).

например:.

document.getElementsByTagName("img")[0].src

вместо:

document.getElementsByTagName("img")[0].getAttribute("src")

. Я дам вам jqueryify .src.

1 голос
/ 04 июня 2009

почему бы тебе не раздеться?

var hostname = 'http://' + window.location.hostname;

будет работать с именем хоста

http://example.com

затем рефакторинг вашей переменной как

if( imgSrc == imgSrc2 ) ...

до

if( ImgSource(imgSrc) == imgSrc2 ) ...

с помощью

function ImgSource(path) {
    return hostname + path;
}

или наоборот arround

function ImgSource(path) {
    return path.replace(hostname, '');
}
0 голосов
/ 25 апреля 2012

Это происходит на странице, загруженной через Ajax на сервер, который, кажется, основан на .NET. Несмотря на относительный путь, он возвращает полный URL, хотя во всех других браузерах он работает нормально. Это происходит только в IE 8. Я не могу раздеться, основываясь на домене, поскольку есть несколько сред для проекта, над которым я работаю.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...