529 Stimmen

Den aktuellen Domänennamen mit Javascript abrufen (nicht den Pfad usw.)

Ich habe vor, zwei Domänennamen für dieselbe Website zu kaufen. Je nachdem, welche Domäne verwendet wird, möchte ich leicht unterschiedliche Daten auf der Seite bereitstellen. Gibt es eine Möglichkeit, den tatsächlichen Domänennamen zu ermitteln, von dem die Seite geladen wird, damit ich weiß, wie ich meinen Inhalt ändern muss?

Ich habe mich nach solchen Dingen umgesehen, aber das meiste davon funktioniert nicht so, wie ich es möchte.

Zum Beispiel bei der Verwendung von

document.write(document.location)

auf JSFiddle er gibt zurück

http://fiddle.jshell.net/_display/

d.h. der eigentliche Pfad oder was auch immer das ist.

1 Stimmen

Ich bin mir nicht sicher, ob ich genau verstehe, was Sie vorhaben, aber Sie sollten sich vielleicht einmal mit MDN in diesem Zusammenhang

2 Stimmen

Ein bisschen vom Thema abschweifend, aber Sie könnten auch in Erwägung ziehen, Subdomains zu haben, anstatt zwei separate Domainnamen. Etwas wie premium.random.com y free.random.com

809voto

Sunil Shakya Punkte 5628

Nehmen wir an, Sie haben diesen Url-Pfad:

http://localhost:4200/landing?query=1#2

Sie können sich also selbst bedienen, indem Sie die Standortwerte 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 feststellen, wonach Sie suchen:

window.location.hostname

790voto

Gareth Punkte 123487

Wie wäre es damit:

window.location.hostname

Les location Objekt hat tatsächlich eine Anzahl der Attribute die sich auf verschiedene Teile der URL beziehen

33voto

adelindev Punkte 498
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

In der vorherigen Version wurde die gesamte Domäne (einschließlich der Subdomäne) abgerufen. Jetzt wird die richtige Domäne je nach Präferenz bestimmt. Wenn ein 2. Argument als wahr angegeben wird, wird die Subdomain einbezogen, andernfalls wird nur die "Hauptdomain" zurückgegeben.

24voto

cprcrack Punkte 15337

Wenn Sie nicht an dem Hostnamen interessiert sind (z. B. www.beta.example.com ), sondern im Domänennamen (zum Beispiel example.com ), funktioniert dies für gültige Hostnamen:

function getDomainName(hostName)
{
    return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}

17voto

Daniel Winterstein Punkte 2240

window.location.hostname ist ein guter Anfang. Er enthält jedoch Subdomänen, die Sie wahrscheinlich entfernen möchten. Wenn der Hostname z. B. lautet www.example.com wollen Sie wahrscheinlich nur die example.com etwas.

Wie immer gibt es Eckfälle, die das Ganze kompliziert machen, z. B. bbc.co.uk . Die folgende Regex funktioniert gut für mich:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X