tags:

views:

32

answers:

1

I currently have a function that grabs the browser windows uri, parses out the variables and assigns them to a variable. This is great but I would like to extend window.location to store these. Here is the code I have but it doesn't appear to be working. Can someone explain why or how to do this?

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;

}();
A: 

No need to use prototype. There is only one window.location. The following code works for me. Just get rid of prototype.

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;
}();
Milar