Я полный noob на javascript, поэтому мне нужно знать, если и как это можно сделать:
У меня есть сайт с 2-мя языками, английским и итальянским. Итальянские страницы находятся на
www.mysite.com/ita/index.hmtl
пока английские страницы включены
www.mysite.com/eng/index.hmtl
Пользователь меняет langages из значков флагов. Проблема в том, что я не могу изменить ссылки меню отдельно для сайтов ITA и ENG, поэтому я не могу напрямую редактировать html. Итак, прямо сейчас, когда пользователь идет по английскому сайту, ссылки меню по-прежнему указывают на итальянские страницы.
Так есть код javascript, чтобы изменить ВСЕ URL-адреса на странице, поэтому, когда пользователь переходит на английскую версию сайта на странице
www.mysite.com/eng/index.hmtl
все URL-адреса будут изменены с
/ITA/
в
/eng/?
В настоящее время я использую этот код:
<script type="text/javascript">
if(document.URL.indexOf("/aprol/") >= 0){
function replace_url(elem, attr) {
var elems = document.getElementsByTagName(elem);
for (var i = 0; i < elems.length; i++)
elems[i][attr] = elems[i][attr].replace('mysite.com/', 'mysite.com/eng/');
}
}
window.onload = function(){
replace_url('a', 'href');
}
</script>
и это как samlple html link
<a href="mysite.com/index.html">Link</a>
Но он работает только на firefox, а не на хром или IE9.
Не могу понять, почему честно.
Вы можете использовать регулярное выражение для изменения ссылок
var url ='www.mysite.com/eng/index.hmtl', lang = '/ita';
url = url.replace(/\/\w*/,lang);
console.log(url); => www.mysite.com/ita/index.hmtl
Сохраните язык в cookie (плагин jquery cookie) и обновите все ссылки на загрузку страницы с использованием языка по умолчанию или файла cookie.
JS
$("a.changeLang").click(function(e){
e.preventDefault();
$.cookie("lang", $(this).attr("href"));
});
var lang = $.cookie("lang");
$("a").each(function(ref){
$(ref).attr("href", $(ref).attr("href").replace("ita", lang).replace("eng", lang);
});
и HTML
<a class="changeLang" href="ita">ITA</a>
<a class="changeLang" href="eng">ENG</a>