jquery, domena, pobierz URL

140

Jak mogę uzyskać nazwę domeny za pomocą jQuery?

AlexC
źródło

Odpowiedzi:

335

Nie potrzebujesz do tego jQuery, wystarczy prosty javascript:

alert(document.domain);

Zobacz to w akcji:

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);

Aby uzyskać dalsze wartości związane z domeną, sprawdź właściwości window.locationonline. Może się okazać, że location.hostjest to lepsza opcja, ponieważ jej zawartość może różnić się od document.domain. Na przykład adres URL http://192.168.1.80:8080będzie zawierał tylko adres ipad document.domain, ale zarówno adres IP , jak i numer portu location.host.

Sampson
źródło
7
@ rob.alarcon Jest to rekomendacja W3C i ma bardzo szerokie wsparcie wśród przeglądarek, starych i nowych. Jedynym problemem, o którym wiem, jest to, że niektóre przeglądarki ( takie jak Firefox ) pozwalają pisać do tej właściwości (tylko do odczytu zgodnie ze specyfikacją), o ile nowa wartość jest subdomeną oryginalnej domeny.
Sampson
4
Właściwie poleciłbym używanie window.location.host(jak opublikował bibby). Właśnie naprawiłem błąd document.domainpolegający na ustawianiu domeny głównej zamiast subdomeny.
Derek Morrison,
W IE11 document.location.originzwraca undefined.
TimothyBuktu
113

EDYTOWAĆ:

Jeśli nie potrzebujesz obsługi IE10, możesz po prostu użyć: document.location.origin

Oryginalna odpowiedź, jeśli potrzebujesz wsparcia ze starszych wersji

Możesz uzyskać to wszystko i więcej, sprawdzając obiekt lokalizacji:

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:"
}

więc:

location.host 

byłaby domeną, w tym przypadku stackoverflow.com. Aby uzyskać pełną pierwszą część adresu URL, możesz użyć:

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

co w tym przypadku byłoby http://stackoverflow.com

Nie jest wymagane jQuery.

superluminium
źródło
@ Aby uzyskać pełny adres URL, dlaczego nie użyć tego, document.location.originco spowoduje przejście do https://stackoverflow.com . Ta metoda zawiera odpowiedni protokół
Nathileo
33

Podobnie jak odpowiedź, zanim się pojawi

location.host

Lokalizacja globalna zawiera również więcej zabawnych faktów na temat bieżącego adresu URL. (protokół, host, port, nazwa ścieżki, wyszukiwanie, hash)

bibby
źródło
20

Jeśli potrzebujesz stringów, tak jak ja, użyj tej funkcji - to naprawdę działa.

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

Ale zwróć uwagę, że jeśli w adresie URL znajduje się subdomena (np. Www.), Zostanie ona zwrócona z nazwą hosta. I odwrotnie, jeśli nie ma subdomeny, nazwa hosta też jej nie będzie.

Vova Popov
źródło
Czy @Vova Popov (lub ktoś) może wyjaśnić ostatnie zdanie? „www. ar no www.”?!?
Randall Cook
2
Mówi, że a.hostname zwróci www. to część Twojej domeny. Innymi słowy, byłoby to fałszywe: getHost('http://www.google.com') == 'google.com'podczas gdy byłoby to prawdą:getHost('http://google.com') == 'google.com'
Milimetryczny
9

Możesz użyć poniższych kodów, aby uzyskać różne parametry bieżącego adresu 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);
Nimesh07
źródło
czy istnieje również sposób na uzyskanie hosta, na którym jest hostowany plik js zamiast dokumentu? bankomat. Manipuluję po stronie serwera plików js, aby uzyskać ten ciąg „połączenia”, który działa, ale wygląda nieefektywnie, ponieważ wolałbym statyczny plik js.
yellowsir
6

jQuery nie jest potrzebne, użyj prostego javascript:

document.domain
Adam
źródło
może nie jest to potrzebne, ale mówiąc w ten sposób nie odpowiadasz na pytanie
Emiliano
Tak, nie jestem robotem, który odpowiada na to pytanie dosłownie. Odpowiedziałem na to pytanie pragmatycznie, wiedząc, jaki był cel końcowy i że nie potrzebujesz jQuery, aby go osiągnąć.
Adam
Rozumiem, ale taka odpowiedź nie jest kompletna, jeśli chcesz, możesz zrobić lepszą odpowiedź
Emiliano
3

document.baseURIdaje domenę + port. Jest używany, jeśli tag obrazu używa ścieżki względnej zamiast ścieżki bezwzględnej. Prawdopodobnie już rozwiązany, ale może być przydatny dla innych facetów.

jsbeckr
źródło
2
var part = location.hostname.split('.');
var subdomains = part.shift();
var upperleveldomains = part.join('.');

domeny drugiego poziomu, możesz użyć

var sleveldomain = parts.slice(-2).join('.');
Muhammad Mohsin Muneer
źródło
1

Sprawdź to

alert(window.location.hostname);

zwróci to nazwę hosta jako www.domain.com

code.rider
źródło
0

o ile widzę, nikt nie opublikował rozwiązania jquery poza natywnym kodem javascript.

Musisz przekazać adres URL jako ciąg znaków, a dostanie on hosta bez użycia wyrażenia regularnego.

function getHostFromUrl(urlString) {
    return $a = $('<a>', {
        'href': urlString
    }).prop('host');
}
Zoltán Süle
źródło
-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}
Gubatron
źródło
-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}
Gubatron
źródło
3
ale jeśli adres URL nie ma już prefiksu, spowoduje to usunięcie nazwy domeny. Przykład: „stackoveflow.com” zmieni się na „com”
Filipiz
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.- Jamie Zawinski
msangel