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 я не мастер. |
А каким образом домен попадает в ссылки?
|
$('#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,
полностью с вами согласен, но раз человек хочет решить проблему таким образом, я предложил ему такой вот вариант. |
Никаких таких вариантов в принципе не должно быть, иначе это означает углубление проблемы. ;)
|
Цитата:
|
Цитата:
|
Цитата:
Вот чтобы этого не было, ссылки должен формировать серверный скрипт, клиент вообще не должен оперировать ссылками. |
Цитата:
|
Цитата:
Домен должен задаваться переменной/константой, значение которой можно получить, тогда и переезды не страшны, и клиент не будет заниматься работой, которой он вообще не должен заниматься. |
Цитата:
В общем я просто поиск и замену по базе сделал запросом. |
Цитата:
Клиент вынужден перебирать DOM структуру а затем еще производить изменения, что уже плохо. Но вы даже не задумываетесь о том, что ваши "битые" ссылки роботы не будут индексировать как ваши внутренние ссылки. И вы еще пытаетесь найти оправдание этой затее? А нужно на сервере скриптом или в HTML-редакторе, если ссылки в файлах, найти таковые и изменить. И желательно заменить на переменную, и в тексте принимаемом от редактора заменять такие вхождения, или задумайтесь о модуле для своего редактора, который бы позволял работать с внутренними ссылками. Ну а если вам наплевать и на индексацию, и на то что клиент будет ковыряться постоянно, делайте, я не преследую цель уговорить вас, я предлагаю задуматься. |
Часовой пояс GMT +3, время: 19:37. |