Den aktuellen Domainnamen mit Javascript abrufen (nicht den Pfad usw.)
Ich plane, zwei Domainnamen für dieselbe Website zu kaufen. Abhängig davon, welche Domain verwendet wird, plane ich, leicht unterschiedliche Daten auf der Seite bereitzustellen. Gibt es eine Möglichkeit für mich, den tatsächlichen Domainnamen zu erkennen, von dem die Seite geladen wird, damit ich weiß, welchen Inhalt ich ändern muss?
Ich habe nach solchen Sachen gesucht, aber die meisten funktionieren nicht so, wie ich es möchte.
Zum Beispiel beim Verwenden
document.write(document.location)
auf JSFiddle gibt es zurück
http://fiddle.jshell.net/_display/
d.h. der tatsächliche Pfad oder was auch immer das ist.
Antwort #1
Nehmen wir an, Sie haben diesen URL-Pfad:
http://localhost:4200/landing?query=1#2
Sie können sich also an den Standortwerten bedienen, wie folgt:
window.location.hash: "#2"
window.location.host: "localhost:4200"
window.location.hostname: "localhost"
window.location.href: "http://localhost:4200/landing?query=1#2"
window.location.origin: "http://localhost:4200"
window.location.pathname: "/landing"
window.location.port: "4200"
window.location.protocol: "http:"
window.location.search: "?query=1"
Jetzt können wir schließen, dass Sie nach Folgendem suchen:
window.location.hostname
Antwort #2
Wie wäre es mit:
window.location.hostname
Das location-Objekt hat tatsächlich eine Reihe von Attributen, die sich auf verschiedene Teile der URL beziehen
Antwort #3
function getDomain(url, subdomain) {
subdomain = subdomain || false;
url = url.replace(/(https?:\/\/)?(www.)?/i, '');
if (!subdomain) {
url = url.split('.');
url = url.slice(url.length - 2).join('.');
}
if (url.indexOf('/') !== -1) {
return url.split('/')[0];
}
return url;
}
Beispiele
- getDomain('http://www.example.com');/example.com
- getDomain('www.example.com');/example.com
- getDomain('http://blog.example.com', true);/blog.example.com
- getDomain(location.href);/..
Die vorherige Version erfasste die gesamte Domain (einschließlich Subdomain). Jetzt wird die richtige Domain je nach Einstellung bestimmt. Wenn also ein zweites Argument als true angegeben wird, wird die Subdomain einbezogen, andernfalls wird nur die ‚Hauptdomain‘ zurückgegeben.
Antwort #4
Wenn Sie sich nicht für den Hostnamen interessieren (zum Beispiel www.beta.example.com), sondern für den Domainnamen (zum Beispiel example.com), funktioniert dies für gültige Hostnamen:
function getDomainName(hostName)
{
return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
Antwort #5
window.location.hostname ist ein guter Anfang. Aber es beinhaltet Subdomains, die Sie wahrscheinlich entfernen möchten. Zum Beispiel, wenn der Hostname www.example.com ist, möchten Sie wahrscheinlich nur den Teil example.com.
Es gibt wie immer Randfälle, die dies knifflig machen, z. B. bbc.co.uk. Der folgende Regex funktioniert bei mir gut:
let hostname = window.location.hostname;
// remove any subdomains, e.g. www.example.com -> example.com
let domain = hostname.match(/^(?:.*?\.)?([a-zA-Z0-9\-_]{3,}\.(?:\w{2,8}|\w{2,4}\.\w{2,4}))$/)[1];
console.log("domain: ", domain);Antwort #6
Wenn Sie eine vollständige Domain-Ursprung wünschen, können Sie dies verwenden:
document.location.origin
Und wenn Sie nur die Domain erhalten möchten, können Sie einfach Folgendes verwenden:
document.location.hostname
Aber Sie haben andere Optionen, schauen Sie sich die Immobilien in an:
document.location
Antwort #7
Da diese Frage nach dem Domainnamen, nicht nach dem Hostnamen, fragt, sollte eine richtige Antwort sein
window.location.hostname.split('.').slice(-2).join('.')
Dies funktioniert auch für Hostnamen wie www.example.com.
Antwort #8
Sie können es leicht aus dem Location-Objekt in JavaScript erhalten:
Zum Beispiel ist die URL dieser Seite:
http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc
Dann können wir die genaue Domain mit den folgenden Eigenschaften des Standortobjekts erhalten:
location.host = "www.stackoverflow.com"
location.protocol= "http:"
Sie können die vollständige Domain mit erstellen:
location.protocol + "//" + location.host
Was in diesem Beispiel http://www.stackoverflow.com zurückgibt
Zusätzlich dazu können wir die vollständige URL und auch den Pfad mit anderen Eigenschaften des Standortobjekts erhalten:
location.href= "http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"
location.pathname= "questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"
