Создание нового объекта местоположения в JavaScript

StackOverflow https://stackoverflow.com/questions/3213531

  •  13-09-2020
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top