Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS подмена части ULR на лету (https://javascript.ru/forum/misc/59012-js-podmena-chasti-ulr-na-letu.html)

stem 22.10.2015 01:26

JS подмена части ULR на лету
 
Уважаемые знатоки!:help: :help: :help:

Есть описание товара на странице со ссылками на другие товары, ранее сайт переносился с другого домена, поэтому при редактировании в описании в некоторых местах остались абсолютные ссылки с доменом.

<div id="desc">
...какой-то текст...
<a href="https://domain1.com/product-6456.html">Пример 1</a>
<a href="/product-6456.html">Пример 2</a>
<a href="https://domain1.com/product-12.html">Пример 3</a>
<a href="https://newdomain.com/product-1-562.html">Пример 4</a>
и т.д.
</div>

Мне необходимо подменить старый домен domain1.com на newdomain.com во всех ссылках.

Нарыл такой код:
<script>
var a = document.getElementById("desc").firstChild ;
a.href = a.href.replace(/domain1.com/, "newdomain.com") ;
</script>

Но не работает:cray: , пробовал еще вот такие варианты:
<script>
var a = document.getElementById("desc").href ;
a.href = a.href.replace(/domain1.com/, "newdomain.com") ;
</script>

<script>
$a = "https://domain1.com";
document.getElementById('descr').href = $a;
</script>

Безрезультатно. Скрипт вставлял после div.

Товаров много, поэтому заходить в каждый и проверять не вариант. На предыдущем домене работает копия сайта под другие товары, поэтому редирект тоже не вариант.

Прошу прощения сразу, если мой вопрос тупой, но в js я не мастер.

laimas 22.10.2015 06:07

А каким образом домен попадает в ссылки?

tourniquet 22.10.2015 11:40

$('#desc').children().each(function() {
var value = $(this).attr('href');

if ($(this).attr('href').indexOf('domain1') !== -1)
$(this).attr('href', value.replace('domain1', 'some'));
});

Вот так можно решить проблему с помощью jQuery.

laimas 22.10.2015 11:46

Цитата:

Сообщение от tourniquet
Вот так можно решить проблему с помощью jQuery.


Проблему нужно решать на сервере, сдается, что она там была заложена сразу.

tourniquet 22.10.2015 15:30

laimas,
полностью с вами согласен, но раз человек хочет решить проблему таким образом, я предложил ему такой вот вариант.

laimas 22.10.2015 16:30

Никаких таких вариантов в принципе не должно быть, иначе это означает углубление проблемы. ;)

stem 23.10.2015 18:29

Цитата:

Сообщение от laimas (Сообщение 392801)
А каким образом домен попадает в ссылки?

На старом сайте клиент редактировал товары, и ставил ссылки на другие товары, я 101 раз объяснял и записывал видеоурок какую часть ссылки надо копировать, чтобы домен не вставлять в ссылку. Но клиент тупит временами, тут я уже ничем не могу помочь)))

stem 23.10.2015 18:34

Цитата:

Сообщение от tourniquet (Сообщение 392821)
$('#desc').children().each(function() {
var value = $(this).attr('href');

if ($(this).attr('href').indexOf('domain1') !== -1)
$(this).attr('href', value.replace('domain1', 'some'));
});

Вот так можно решить проблему с помощью jQuery.

Спасибо, этот код в body вставлять или в head?

laimas 23.10.2015 19:49

Цитата:

Сообщение от stem
На старом сайте клиент редактировал товары, и ставил ссылки на другие товары, я 101 раз объяснял и записывал видеоурок какую часть ссылки надо копировать, чтобы домен не вставлять в ссылку. Но клиент тупит временами, тут я уже ничем не могу помочь)))


Вот чтобы этого не было, ссылки должен формировать серверный скрипт, клиент вообще не должен оперировать ссылками.

stem 24.10.2015 02:53

Цитата:

Сообщение от laimas (Сообщение 392955)
Вот чтобы этого не было, ссылки должен формировать серверный скрипт, клиент вообще не должен оперировать ссылками.

Ссылки в редакторе текста проставляются, в данной cms нет возможности настроить редактор на реагирование абсолютных ссылок. При чем тут сервер я не пойму...


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