相应地拆分窗口位置

时间:2014-02-12 17:21:04

标签: javascript redirect window.location

我正在尝试根据lang选项下拉并使用当前window.location重定向用户

因此,如果用户正在访问

  1. 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
  2. 我已经完成了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); 
                    }
    

2 个答案:

答案 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匹配,则继续,如果不匹配,则将其交换出来。