Создание нового объекта 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 строки, если хотите...
Для этого вы также можете использовать одну из множества библиотек.