374

同じサイトの 2 つのドメイン名を購入する予定です。使用するドメインに応じて、ページ上で提供するデータが若干異なることを計画しています。ページの読み込み元の実際のドメイン名を検出して、コンテンツを何に変更すればよいかを知る方法はありますか?

私はこのようなものを探し回ってきましたが、ほとんどが思い通りに機能しません。

たとえば、使用する場合

document.write(document.location)

JSFiddleでは、それが返されます

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

つまり、実際のパスまたはそれが何であれ。

4

19 に答える 19

642

どうですか:

window.location.hostname

オブジェクトには、location実際にはURL のさまざまな部分を参照する多数の属性があります。

于 2012-07-09T19:38:18.183 に答える
24

www.beta.example.comホスト名 (例: ) ではなくドメイン名 (例: )に関心がある場合example.com、これは有効なホスト名に対して機能します。

function getDomainName(hostName)
{
    return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
于 2013-11-12T19:04:23.980 に答える
21
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;
}

以前のバージョンでは、フル ドメイン (サブドメインを含む) を取得していました。好みに応じて適切なドメインを決定するようになりました。そのため、2 番目の引数が true として指定された場合、サブドメインが含まれます。それ以外の場合は、「メイン ドメイン」のみが返されます。

于 2015-06-16T20:22:11.517 に答える
8

この質問はホスト名ではなくドメイン名を尋ねるため、正解は

window.location.hostname.split('.').slice(-2).join('.')

これは、 www.example.comなどのホスト名でも機能します。

于 2016-12-11T05:18:30.620 に答える
8

ドメイン名だけに関心があり、サブドメインを無視したい場合は、 と から解析する必要がhostありhostnameます。

次のコードはこれを行います。

var firstDot = window.location.hostname.indexOf('.');
var tld = ".net";
var isSubdomain = firstDot < window.location.hostname.indexOf(tld);
var domain;

if (isSubdomain) {
    domain = window.location.hostname.substring(firstDot == -1 ? 0 : firstDot + 1);
}
else {
  domain = window.location.hostname;
}

http://jsfiddle.net/5U366/4/

于 2012-07-09T19:53:05.417 に答える
7

使用する

document.write(document.location.hostname)​

window.locationたくさんのプロパティがあります。それらのリストについては、こちらを参照してください。

于 2012-07-09T19:38:23.037 に答える
7

完全なドメインオリジンが必要な場合は、これを使用できます。

document.location.origin

また、ドメインのみを取得したい場合は、次のように使用できます。

document.location.hostname

ただし、他のオプションがあります。次のプロパティを見てください。

document.location
于 2016-06-25T14:10:39.357 に答える
1

私は JavaScript を初めて使用しますが、document.domainを使用することはできませんか?

例:

<p id="ourdomain"></p>

<script>
var domainstring = document.domain;
document.getElementById("ourdomain").innerHTML = (domainstring);
</script>

出力:

domain.com

また

www.domain.com

あなたのウェブサイトで何を使用しているかによって異なります。

于 2019-01-15T20:06:48.843 に答える
1

質問がドメイン名に関するものであっても、受け入れられた解決策にはサブドメインが含まれます (例: you get blog.example.comcalls location.hostname)。https://blog.example.com/index.html今後の参考のために、ドメイン (例: -> example.com) のみを Micheal として抽出するワンライナーをお勧めします。

location.hostname.split('.').filter(( _, i) => i < 2).join('.')

注意してください!TLD が 2 つの部分で構成されている場合 (例: )、破損する可能性があり.co.ukます。その場合は、上記のコードで 2 を 3 に変更してください。

于 2021-09-27T20:34:28.857 に答える