2012-08-06 68 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的工作原理有一個基本的瞭解。