jquery, домен, получить URL


Ответы:


338

Для этого вам не нужен jQuery, достаточно простого javascript:

alert(document.domain);

Посмотрите это в действии:

console.log("Output;");  
console.log(location.hostname);
console.log(document.domain);
alert(window.location.hostname)

console.log("document.URL : "+document.URL);
console.log("document.location.href : "+document.location.href);
console.log("document.location.origin : "+document.location.origin);
console.log("document.location.hostname : "+document.location.hostname);
console.log("document.location.host : "+document.location.host);
console.log("document.location.pathname : "+document.location.pathname);

Для получения дополнительных значений, связанных с доменом, ознакомьтесь со свойствами файла window.locationonline. Возможно, вы обнаружите, что location.hostэто лучший вариант, поскольку его содержание может отличаться от document.domain. Например, URL-адрес http://192.168.1.80:8080будет содержать только IP-адрес document.domain, но и IP-адрес, и номер порта location.host.


7
@ rob.alarcon Это рекомендация W3C, которая имеет очень широкую поддержку среди браузеров, старых и новых. Единственная проблема, о которой я знаю, заключается в том, что некоторые браузеры ( например, Firefox ) позволяют вам писать в это свойство (только для чтения в соответствии со спецификацией), если новое значение является поддоменом исходного домена.
Sampson

4
Я бы действительно рекомендовал использовать window.location.host(как написано в bibby). Я только что исправил ошибку, из-за которой document.domainустанавливался корневой домен вместо поддомена.
Дерек Моррисон

В IE11 document.location.originвозвращается undefined.
TimothyBuktu

113

РЕДАКТИРОВАТЬ:

Если вам не нужна поддержка IE10, вы можете просто использовать: document.location.origin

Оригинальный ответ, если вам нужна устаревшая поддержка

Все это и многое другое можно получить, осмотрев объект локации:

location = {
  host: "stackoverflow.com",
  hostname: "stackoverflow.com",
  href: "http://stackoverflow.com/questions/2300771/jquery-domain-get-url",
  pathname: "/questions/2300771/jquery-domain-get-url",
  port: "",
  protocol: "http:"
}

так:

location.host 

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

location.protocol + "//" + location.host

который в этом случае будет http://stackoverflow.com

Не требуется jQuery.



@ Для полного URL-адреса, почему бы не использовать, document.location.originкоторый приведет к https://stackoverflow.com . Этот метод включает соответствующий протокол
Nathileo

33

Подобно ответу до того, как есть

location.host

В location global также есть больше интересных фактов о текущем URL. (протокол, хост, порт, путь, поиск, хеш)


20

Если вам нужна строка, как я, воспользуйтесь этой функцией - она ​​действительно работает.

function getHost(url)
{
    var a = document.createElement('a');
    a.href = url;
    return a.hostname;
}

Но обратите внимание: если в URL-адресе есть поддомен (например, www.), Он будет возвращен с именем хоста. И наоборот, если нет субдомена, у имени хоста тоже не будет.


Не мог бы @Vova Popov (или кто-то еще) уточнить последнее предложение? "www. ar no www."?!?
Randall Cook

2
Он говорит, что a.hostname вернет www. это часть вашего домена. Другими словами, это было бы ложью: getHost('http://www.google.com') == 'google.com'тогда как это было бы правдой:getHost('http://google.com') == 'google.com'
Milimetric

9

Вы можете использовать приведенные ниже коды для получения различных параметров текущего URL-адреса

alert("document.URL : "+document.URL);
alert("document.location.href : "+document.location.href);
alert("document.location.origin : "+document.location.origin);
alert("document.location.hostname : "+document.location.hostname);
alert("document.location.host : "+document.location.host);
alert("document.location.pathname : "+document.location.pathname);

есть ли также способ получить хост, на котором размещен файл js вместо документа? атм. Я манипулирую стороной файлового сервера js, чтобы получить эту строку «подключения», которая работает, но выглядит неэффективно, так как я бы предпочел статический файл js.
yellowsir

6

jQuery не нужен, используйте простой javascript:

document.domain

может быть, это не нужно, но, говоря так, вы не отвечаете на вопрос,
Эмилиано

Да, я не робот, который буквально отвечает на вопрос. Я ответил на этот вопрос прагматично, зная, какова конечная цель и что вам не нужен jQuery для достижения цели.
Adam

Я понимаю, но такой ответ неполон, если хочешь, можешь дать лучший ответ
Эмилиано

3

document.baseURIдает вам домен + порт. Он используется, если в теге изображения используется относительный, а не абсолютный путь. Возможно, уже решено, но может быть полезно другим ребятам.


2
var part = location.hostname.split('.');
var subdomains = part.shift();
var upperleveldomains = part.join('.');

домен второго уровня, вы можете использовать

var sleveldomain = parts.slice(-2).join('.');

1

Проверь это

alert(window.location.hostname);

это вернет имя хоста как www.domain.com


-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}

-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}

3
но если URL-адрес уже не имеет префикса, он удалит доменное имя .. Пример: «stackoveflow.com» станет «com»
Filipiz

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.- Джейми Завински
msangel
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.