Создание нового объекта Location в javascript - PullRequest
64 голосов
/ 09 июля 2010

Возможно ли создать новый объект Location в javascript? У меня есть URL в виде строки, и я хотел бы использовать то, что javascript уже предоставляет, чтобы получить доступ к различным его частям.

Вот пример того, о чем я говорю (я знаю, это не работает):

var url = new window.location("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;
// etc etc

Возможно ли что-то подобное или мне по сути придется самому создать этот объект?

Ответы [ 4 ]

119 голосов
/ 09 июля 2010

Хорошо, вы можете использовать элемент привязки для извлечения частей URL, например:

var url = document.createElement('a');
url.href = "http://www.example.com/some/path?name=value#anchor";
var protocol = url.protocol;
var hash = url.hash;

alert('protocol: ' + protocol);
alert('hash: ' + hash);
​

Он работает во всех современных браузерах и даже в IE 5.5+.

Проверьтепример здесь .

21 голосов
/ 25 ноября 2015

Как насчет использования стандартного объекта URL ?

var url = new URL("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;

Предупреждение : этот интерфейс немного новый, поэтому, если вы не используете transpiler , пожалуйста, проверьте таблицу совместимости и проведите тестирование в целевых браузерах.

9 голосов
/ 09 июля 2010

Вы можете использовать силу якорного элемента

var aLink = document.createElement("a");
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
alert(aLink.pathname);
0 голосов
/ 09 июля 2010

Вы можете проанализировать его в регулярном выражении, чтобы получить части как совпадения ... У меня нет полного кода прямо сейчас, но это можно использовать для получения querydata:

var myUrl = window.location.href;
var matches = myUrl.match(/([^\?]+)\?(.+)/);
var queryData = matches[2];

совпадения [0] - полная строка, совпадения (1) - первая часть URL (вплоть до?) ... вы можете создать регулярное выражение для анализа каждой части URL строки, если хотите ...

Вы также можете использовать одну из множества библиотек, уже существующих для этого.

...