Как получить домен с помощью javascript из поддомена?

Подскажите, пожалуйста, как решить такую проблему:
Нужно получить из урл домен. Стандартными ф-циями типа location.hostname, new URL(url_string).domain из поддомена домен не можно вытянуть. Решения в сети не слишком универсальные (типа перечислить все доменные зоны и т.п.).

Т.е. как из my.google.com.ru получить google.com.ru?

Подобная штука реализована в счетчике Universal Analytics ga('create', 'UA-XXXX-Y', 'auto');...
  • Вопрос задан
  • 7903 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
не можно == нельзя

Т.е. как из my.google.com.ru получить google.com?

Внезапно, это совсем разные домены. Ладно там из my.google.com.ru получить google.com.ru или там com.ru, они хотя бы в одной доменной зоне.

Но все же... можно парсить так:
// разделяем хостнэйм на доменные зоны, и разворачиваем наоборот для удобства
var levels = hostname.split('.').reverse();


Далее можно составить список приоритетов доменных имен, и поставить там com выше ru. Если у нас доменная зона первого уровня ru, а второго - com, то убрать ru и все что дальше третьего уровня (метод .slice). Затем можно попробовать проверить домен на существование и если такого домена не существует, добавлять части.

Но это опять же все под задачу, ибо универсальные методы должны базироваться на идее того, что доменное имя имеет все же очевидную структуру.
Ответ написан
Все зависит от вашей задачи. Домен на уровень выше из поддомена получается так:
var subdomain = 'my.google.com.ru';
var domain = subdomain.split('.').slice(1).join('.');

Вопрос же определения необходимого конкретно вам уровня домена — совсем другой вопрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы