Создание нового объекта Location в javascript


можно ли создать новый объект 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 62

4 ответа:

Ну, вы можете использовать элемент привязки для извлечения частей 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+.

пример здесь.

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

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

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

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

var aLink = document.createElement("a");
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
alert(aLink.pathname);

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

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

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

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