Разбить URL-адрес на свои компоненты

Я использую javascript и хочу взять строку URL, которая у меня есть, и разбить ее на ее компоненты, такие как аргументы хоста, пути и запроса.

Мне нужно сделать это, чтобы перейти к одному из аргументов запроса, который сам является URL-адресом и, таким образом, закодирован в исходной строке URL.

Я чувствую, что в Javascript должен быть простой способ сделать это. Возможно, что-то похожее на это:

var what_I_Want = url("http://www.domain.com?queryArg1=somequeryargument").getQueryArgumentValue("queryArg1");

Ответ 2

<script type="text/javascript" language="javascript">
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
</script>

Hope this will help..

Ответ 3

Вероятно, это не самый лучший способ сделать это, но простой способ получить строку запроса в JavaScript будет состоять в том, чтобы просто использовать что-то по строкам:

 a = "http://www.domain.com?queryArg1=somequeryargument";
 query = a.substring(a.indexOf('?')+1);

Затем вы можете разбить запрос на основе и и снова на =, чтобы получить любой необходимый вам параметр.

Извините, если это не очень полезно, так как это немного низкотехнологичный метод: P

EDIT: Просто написал быстрый маленький объект JavaScript, чтобы получить параметры URL-запроса для вас (вроде как) в вашем примере. Проверял его только на хроме, но теоретически он должен работать:)

//Quick and dirty query Getter object.
function urlQueryGetter(url){
    //array to store params
    var qParam = new Array();
    //function to get param
    this.getParam = function(x){
    return qParam[x];
    }

    //parse url 
    query = url.substring(url.indexOf('?')+1);
    query_items = query.split('&');
    for(i=0; i<query_items.length;i++){
        s = query_items[i].split('=');
        qParam[s[0]] = s[1];
    }

}

//Useage
var bla = new urlQueryGetter("http://www.domain.com?queryArg1=somequeryargument&test=cheese");
alert(bla.getParam('test'));

Ответ 4

В javascript вы можете сделать это, используя split() для параметров и используя объект местоположения для протокола и домена, как предположил Карл

Также вы можете использовать parseUri, как предложил Tak

Существует также плагин jQuery, который упрощает парсинг, если вы уже используете jQuery в своем проекте: https://github.com/allmarkedup/jQuery-URL-Parser#readme

Пример:

$.url('http://allmarkedup.com?sky=blue&grass=green').param('sky'); // returns 'blue'