我正在尝试根据lang选项下拉并使用当前window.location重定向用户
因此,如果用户正在访问
xxxx.com will need to go to xxxx.com/langchoice.
2。xxxx.com/currentlang/test.php will need to go to xxxx.com/langchoice/test.php
3 xxxx.com/test.php will need to go to xxxx.com/langchoice/test.php
我已经完成了1和2,但对我编码的方式并不是特别满意,因为如果有更多语言可能会出现,我每次都需要添加一行......这可以更好地重写吗?
var s = window.location.href;
if (s.indexOf(".php") !=-1)
{
if (s.indexOf("/en/") !=-1)
{
var location=window.location.href.replace("/en/","/"+evt.selectedItem+"/");
}
else if (s.indexOf("/gr/") !=-1)
{
var location=window.location.href.replace("/gr/","/"+evt.selectedItem+"/");
}
else if (s.indexOf("/it/") !=-1)
{
var location=window.location.href.replace("/it/","/"+evt.selectedItem+"/");
}
else
{
}
window.location.replace(location);
}
else
{
var location=window.location.href.replace("#","");
window.location.replace(location+evt.selectedItem);
}
答案 0 :(得分:1)
这确实会检查是否有“语言”,但更换的基本想法是
有很多方法可以做到这一点,这是一种方式
var orgPathName = window.location.pathname;
var newPathName = orgPathName.replace(/^\/[^\/]*/,"/" + evt.selectedItem);
var newUrl = window.location.href.replace(orgPathName, newPathName);
现在进行检测,你做了一个简单的测试
var hasLang = (/^\/(en|gr|in)\//i).test(window.location.pathname);
痛苦就是维护语言列表
答案 1 :(得分:0)
你如何坚持langchoice
?你把它存放在饼干里吗?
我认为你基本上是说用户应该在:
xxxx.com/[langchoice]etc
始终。
所以你可以拆分'/'然后,如果它存在,检查项目[1]。如果它与langchoice
cookie匹配,则继续,如果不匹配,则将其交换出来。