jquery, domena, pobierz URL


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.


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.



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


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.


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

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

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.


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('.');

1

Sprawdź to

alert(window.location.hostname);

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


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

-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
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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.