Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Префик в пути картинки (https://javascript.ru/forum/dom-window/70451-prefik-v-puti-kartinki.html)

espltd 06.09.2017 08:06

Префик в пути картинки
 
Бодрого всем дня. Ребят, подскажите пожалуйста, на сайте выводятся несколько картинок.

<img src="/files/one.jpg">

<img src="/files/two.jpg">

<img src="/files/three.jpg">


Как яваскриптом в путь картинок добавить префикс http://mysite/

чтобы на выходе получить:

<img src="http://mysite/files/one.jpg">

<img src="http://mysite/files/two.jpg">

<img src="http://mysite/files/three.jpg">

ksa 06.09.2017 08:37

Цитата:

Сообщение от espltd
Как яваскриптом в путь картинок добавить префикс http://mysite/

Используй base
http://htmlbook.ru/samhtml5/metadann...a/element-base

espltd 06.09.2017 08:44

Цитата:

Сообщение от ksa (Сообщение 463807)

Не знал о таком способе, спасибо. А на всякий случай, есть решение яваскриптом, а то вдруг base не подойдет, ну мало-ли, кто знает.....

espltd 06.09.2017 09:12

Как я и говорил, данный способ не подошел, все дело в том, что мне надо на одной конкретной странице сайта подгрузить фотки с другого сайта, а все остальные страницы с картинками должны браться из главной копии сайта. А получается, что base меняет полностью путь ко всему, и к картинкам и к ссылкам. Мне нужно лишь на одной странице данный функционал предусмотреть, чтобы с другого сайта картинки взять. Как яваскриптом в начало пути картинки добавить http://mysite.ru/ ? Подскажите пожалуйста, очень нужно

j0hnik 06.09.2017 09:29

[].forEach.call(document.querySelectorAll('img:not([src^="http://mysite"]'), function(el){
	el.src = 'http://mysite'+el.src;
});


не факт что будет работать, но попробуйте

espltd 06.09.2017 09:35

К сожалению, так не хочет работать((( Блллллл----иииии---ннн. Что же делать. Надо очень

j0hnik 06.09.2017 09:40

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

ksa 06.09.2017 09:43

Цитата:

Сообщение от j0hnik
не факт что будет работать

Конечно не будет. :)
Поскольку при чтении значения свойства там будет не только значение атрибута но и таки путь.

Цитата:

Сообщение от espltd
Что же делать.

Усиливать нажим. :D

<img src="/files/one.jpg">
<img src="/files/two.jpg">
<img src="/files/three.jpg">
<script type='text/javascript'>
[].forEach.call(document.querySelectorAll('img'), function(el){
    el.src = 'http://mysite'+el.getAttribute('src');
    alert(el.src);
});
</script>

espltd 06.09.2017 09:51

Ребята, спасибо Вам огромное, все робит.. Сам бы не догадался.. Спасибо!!!!

Nexus 06.09.2017 09:57

ksa, а что будет, если у изображения будет не относительный, а абсолютный путь изначально?
Печальный код, если честно.

j0hnik 06.09.2017 10:03

Цитата:

Сообщение от Nexus (Сообщение 463818)
ksa, а что будет, если у изображения будет не относительный, а абсолютный путь изначально?
Печальный код, если честно.

<img src="/files/one.jpg">
<img src="/files/two.jpg">
<img src="/files/three.jpg">
<script type='text/javascript'>
[].forEach.call(document.querySelectorAll('img:not([src^="http://mysite"]'), function(el){
    el.src = 'http://mysite'+el.getAttribute('src');
    alert(el.src);
});
</script>


дополнить на всякий случай

ksa 06.09.2017 10:30

Цитата:

Сообщение от Nexus
а что будет, если у изображения будет не относительный, а абсолютный путь изначально?

Тогда к тому пути добавится твое "начало"...

Вот кагбэ универсальный вариант...

<img src="/files/one.jpg">
<img src="/files/two.jpg">
<img src="/files/three.jpg">
<img src="http://url/files/test.jpg">
<script type='text/javascript'>
[].forEach.call(document.querySelectorAll('img'), function(el){
	var val=el.getAttribute('src');
	if (/^\//.test(val)) {
		el.src = 'http://mysite'+val;
		alert(el.src);
	}
});
</script>

espltd 06.09.2017 10:46

Ksa, подскажите пожалуйста, как мне сделать, чтобы у меня не ко всем картинкам на данной странице проставлялся префикс, а только к тем, которые находятся в конкретном div-е.

Я попытался так, но это не работает.
<script type="text/javascript">
$(document).ready(function() {

    [].forEach.call(document.querySelectorAll('img', "div#blockNews"), function(el){
        el.src = 'http://m.suzuki.saturn-r.ru'+el.getAttribute('src');
    });
        
});
</script>







Цитата:

Сообщение от ksa (Сообщение 463820)
Тогда к тому пути добавится твое "начало"...

Вот кагбэ универсальный вариант...

<img src="/files/one.jpg">
<img src="/files/two.jpg">
<img src="/files/three.jpg">
<img src="http://url/files/test.jpg">
<script type='text/javascript'>
[].forEach.call(document.querySelectorAll('img'), function(el){
	var val=el.getAttribute('src');
	if (/^\//.test(val)) {
		el.src = 'http://mysite'+val;
		alert(el.src);
	}
});
</script>


Nexus 06.09.2017 10:55

espltd,
<img src="/files/one.jpg">
<div id="blockNews">
<img src="/files/two.jpg">
<img src="/files/three.jpg">
<img src="http://url/files/test.jpg">
</div>
<script type='text/javascript'>
//© ksa
[].forEach.call(document.querySelectorAll('#blockNews img'), function(el){
	var val=el.getAttribute('src');
	if (/^\//.test(val)) {
		el.src = 'http://mysite'+val;
		alert(el.src);
	}
});
</script>

espltd 06.09.2017 11:05

Спасибо Вам всем огромное. Выручили)

ksa 06.09.2017 11:27

Цитата:

Сообщение от espltd
'img', "div#blockNews"

Это не селектор. :no:

Вот селектор
'#blockNews img'


Часовой пояс GMT +3, время: 09:15.