Как получить имя сайта из URL-адреса в Javascript?

Есть ли простой способ получить имя сайта из строки URL?

Пример:

http://www.mysite.com/mypath/mypage -> www.mysite.com
http://mysite.com/mypath/mypage     -> mysite.com

Код JS выполняется на стороне командной строки mongodb, не в браузере.


person BreakPhreak    schedule 06.01.2013    source источник
comment
Могу я спросить, почему это выполняется в CLI MongoDB? Не было бы более разумно сделать это при вставке документа в node.js? Или при запросе?   -  person Sammaye    schedule 06.01.2013
comment
Это часть запроса group в MongoDB.   -  person BreakPhreak    schedule 07.01.2013
comment
Можете ли вы показать нам, что у вас есть для этого банкомата запроса группы? Звучит хорошо, если вы часто запрашиваете (группируете) имя сайта, вы хотели бы сохранить документ с именем сайта, предварительно выведенным регулярным выражением, поскольку даже если вы можете в рамках агрегации регулярное выражение части он никогда не мог бы использовать индекс, который был бы очень медленным   -  person Sammaye    schedule 07.01.2013
comment
stackoverflow.com/questions/14182973/ - см. отмеченный ответ (и мой комментарий под ним)   -  person BreakPhreak    schedule 07.01.2013
comment
эта группа старая и медленная, плюс она не будет работать с раздробленными коллекциями и берет полную блокировку чтения от других операций во время работы ( docs.mongodb.org/manual/reference/commands/#group ), но да, я вижу, что вы не используете это регулярное выражение в качестве условия, которое должно быть в порядке.   -  person Sammaye    schedule 07.01.2013


Ответы (5)


Попробуй это:

url.href = "http://www.mysite.com/mypath/mypag";

url.protocol; // => "http:"
url.hostname; // => "example.com" // site name, you want

window.document.location.href содержит URL-адрес страницы, а window.document.location.hostname — название сайта.

So,

console.log(window.document.location.hostname); // will log the sitename in the console
person Viren Rajput    schedule 06.01.2013
comment
как создается url, пожалуйста? - person BreakPhreak; 06.01.2013

Легко.

window.location.hostname; //Domain name

$("title").text(); //Page name

и это тоже

var loc = window.location;

var filename = loc.pathname.split("/");
filename = filename[pathname.length-1];

alert("Domain: "+loc.hostname);
alert("Filename: "+filename);
person Saransh Sharma    schedule 06.01.2013
comment
ага..... ну, извините, когда я увидел ваш пост, он не упомянул о кли ... дайте мне посмотреть .... для монго - person Saransh Sharma; 06.01.2013
comment
вообще-то это не мой пост :) - person kirugan; 06.01.2013
comment
второй вариант меня хорошо подтолкнул к правильному ответу :) держите плюс - person BreakPhreak; 06.01.2013

Вы можете злоупотреблять привязкой, чтобы получить нужные данные из URL-адреса. :D

function getDomain(url) {
  var anchor = document.createElement('a');
  anchor.setAttribute('href', url);

  return anchor.hostname;
}

console.log(getDomain('http://www.mysite.com/mypath/mypage'));
console.log(getDomain('http://mysite.com/mypath/mypage'));

http://jsfiddle.net/Js76M/

person Robin Drexler    schedule 06.01.2013
comment
вопрос касается JS на стороне сервера (mongodb/node.js и т. д.) - мой вопрос был отредактирован кем-то другим, откатился - person BreakPhreak; 06.01.2013

Этот хорошо работал для меня:

urlString.split('/')[2]

person BreakPhreak    schedule 06.01.2013

Мне также нужно получить домен из URL-адреса, чтобы отображать только доменное имя в справочном разделе моего приложения.

Я нашел это здесь: https://developer.mozilla.org/en-US/docs/Web/API/URL/URL

Конструктор URL() возвращает вновь созданный объект URL, представляющий URL, определенный параметрами.

Если заданный базовый URL-адрес или результирующий URL-адрес не являются допустимыми URL-адресами, создается исключение JavaScript TypeError.

function getDomain(url) {
   return new window.URL(url).hostname;
}

новый URl(url) возвращает объект со следующими свойствами

hash: ""
host: "developer.mozilla.org"
hostname: "developer.mozilla.org"
href: "https://developer.mozilla.org/en-US/docs/Web/API/URL/URL"
origin: "https://developer.mozilla.org"
password: ""
pathname: "/en-US/docs/Web/API/URL/URL"
port: ""
protocol: "https:"
search: ""
person Alex Alan Nunes    schedule 28.06.2020
comment
Хотя этот код может решить проблему, включая объяснение того, как и почему это решает проблему, действительно поможет улучшить качество вашего сообщение и, вероятно, приведет к большему количеству голосов. Помните, что вы отвечаете на вопрос для будущих читателей, а не только для того, кто задает сейчас. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения и указать, какие ограничения и предположения применяются. - person Adrian Mole; 28.06.2020
comment
Это не дает ответа на вопрос. Получив достаточную репутацию, вы сможете /comment">прокомментировать любой пост; вместо этого дайте ответы которые не требуют разъяснений от спрашивающего. – Из обзора - person wscourge; 28.06.2020