2012-08-06 65 views
2

我有一个简单的.htm网页保存在不同的文件夹中以处理不同的语言。使用Javascript根据URL参数重定向到特定的网页

内en文件夹的default.htm(EN \ Default.htm的德\ Default.htm的等)

我需要基于URL参数,也就是说,如果重定向到一个特定网页用户不得不

指定http://localhost/website/default.htm?lang=de,我需要他重定向到

德\的default.htm文件。即德语网页。

它当时的ASPX页面我会工作很容易与ResourceManager的

,并利用.NET

BCL提供的的Request.QueryString选择适当的.resx文件已经做了。但是由于我使用普通的HTML页面我没有一个专业知识来编写客户端

端脚本如JavaScript来查询的URL参数和用户重定向到

所需的页面。

问:

任何人都可以指导我如何在使用任何形式的客户端脚本来

实现重定向达到同样??我在哪里调用脚本功能?

即查询每个帖子事件的参数。

由于一吨

回答

3

你可以用下面这行来很容易的使用javascript来获得params列表。

var paramArray = window.location.search.substring(1).split("&")

这会构建查询串的参数的阵列。从那里,你只需要添加逻辑来找到你在你的问题中指定帕拉姆和使用采取相应的重定向

window.location.href = 'some URL'; //causes the browser to refresh with the new URL

例子:

function getQueryStringArray(){ 
    var assoc=[]; 
    var items = window.location.search.substring(1).split('&'); 
    for(var j = 0; j < items.length; j++) { 
     var a = items[j].split('='); assoc[a[0]] = a[1]; 
    } 
    return assoc; 
} 

//point at which you want to determine redirection 
var qs = getQueryStringArray(); 
var url = ''; 
if (qs.lang !== 'undefined' && qs.lang) { 
    switch (qs.lang) { 
     case 'en': 
     url = 'blah'; 
     break; 
     case 'de': 
     url = 'meh'; 
     break; 
    } 
    window.location.href = url; //reroute 
} 
+0

在Mozilla中获取重定向错误...它说** Firefox不知道如何打开这个地址,因为协议(d)没有与任何程序关联** – 2012-08-06 10:15:56

+1

这意味着它不是一个代码问题队友。这是一个URL格式问题。检查你的网址的格式。 http://support.mozilla.org/en-US/kb/The%20protocol%20is%20not%20associated%20with%20any%20program – 2012-08-06 15:52:23

2

见到这对如何使用jQuery How can I get query string values in JavaScript?

分析查询字符串参数然后你可以重定向到另一个页面window.location的

像这样的事情

<script> 
    $(document).ready(function(){ 
    var p = getParameterByName("lang"); 
    var rootUrl = "yourRootUrl"; 
    var url = rootUrl + p + '/default.htm'; 
    window.location = url; 
}); 
</script> 

否jQuery

<script> 
    (function(){ 
      var p = getParameterByName("lang"); 
      var rootUrl = "yourRootUrl/"; 
      var url = rootUrl + p + '/default.htm'; 
      window.location = url; 
    }()); 
</script> 
+0

这不是标记为jQuery的问题。 – 2012-08-06 07:18:14

+0

不,不是,但没有指定jQuery不被使用。这只是另一种选择。另外,我正在利用S.O的现有解决方案,而不是重新发明轮子。 – 2012-08-06 07:48:59

+1

这不是重新发明轮子,而是关于两件事:1)OP没有问'如何使用jQuery来做到这一点。 2)你的回答要求他整合一个全新的库来支持这种语言重新编排位。 – 2012-08-06 07:58:23

0

下面应该为你做。只需将它包装在<script></script>标签中即可。

// Locate "lang=...." in the url using regex; 
var a = /[\?&]lang=([^\/&#\?]+)/i.exec(window.location.pathname); 
// check if the regex matched 
if (a) { 
    // If so, redirect the user 
    window.location.href = "http://localhost/website/" + a[1] + "/index.htm"; 
} 

这将节省您不必循环浏览网址,但它确实需要对regexp的工作原理有一个基本的了解。