2010-03-04 57 views
2

我目前有一個函數,它抓取瀏覽器窗口的uri,解析出變量並將它們賦值給一個變量。這很好,但我想擴展window.location來存儲這些。這是我有的代碼,但它似乎沒有工作。有人可以解釋爲什麼或如何做到這一點?擴展window.location來存儲GET變量

window.location.prototype.parameters = function() 
{ 
    var query_string = {}; 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 

    for (var i=0;i<vars.length;i++) 
    { 
     var pair = vars[i].split("="); 

     if (typeof query_string[pair[0]] === "undefined") 
     { 
      query_string[pair[0]] = pair[1]; 
     } 
     else if (typeof query_string[pair[0]] === "string") 
     { 
      var arr = [ query_string[pair[0]], pair[1] ]; 
      query_string[pair[0]] = arr; 
     } 
     else 
     { 
      query_string[pair[0]].push(pair[1]); 
     } 
    } 

    return query_string; 

}(); 

回答

2

無需使用原型。只有一個window.location。 以下代碼適用於我。只要擺脫原型。

window.location.parameters = function(){ 
var query_string = {}; 
var query = window.location.search.substring(1); 
var vars = query.split("&"); 

for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 

    if (typeof query_string[pair[0]] === "undefined") 
    { 
     query_string[pair[0]] = pair[1]; 
    } 
    else if (typeof query_string[pair[0]] === "string") 
    { 
     var arr = [ query_string[pair[0]], pair[1] ]; 
     query_string[pair[0]] = arr; 
    } 
    else 
    { 
     query_string[pair[0]].push(pair[1]); 
    } 
} 

return query_string; 
}();