Создание нового объекта 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 ответа

Решение

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам