同じサイトに2つのドメイン名を購入する予定です。どのドメインが使用されているかに応じて、私はページ上でわずかに異なるデータを提供することを計画しています。自分のコンテンツを何に変更すべきかがわかるように、ページのロード元の実際のドメイン名を検出する方法はありますか?
私はこのようなものを見回しました、しかし、それのほとんどは私がそれが望む方法ではうまくいきません。
例えば使用時
document.write(document.location)
on JSFiddle を返します
http://fiddle.jshell.net/_display/
つまり、実際のパスなどです。
ホスト名(例えばwww.beta.example.com
)ではなくドメイン名(例えばexample.com
)に興味がない場合、これは有効なホスト名に対して機能します。
function getDomainName(hostName)
{
return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
スクリプトで実行してみてください。パス: http:// localhost:4200/landing?query = 1#2
console.log(window.location.hash)
場所には次の値があります。
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"
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と指定されている場合はサブドメインを含み、それ以外の場合は「メインドメイン」のみを返します
Javascriptのlocationオブジェクトから簡単に入手できます。
たとえば、このページのURLは次のとおりです。
http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc
それから、locationオブジェクトの以下のプロパティを使って正確なドメインを得ることができます。
location.Host = "www.stackoverflow.com"
location.protocol= "http:"
あなたは完全なドメインを作ることができます:
location.protocol + "//" + location.Host
この例ではhttp://www.stackoverflow.com
を返します。
これに加えて、完全なURLとlocationオブジェクトの他のプロパティを含むパスも取得できます。
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"
ドメイン名だけに興味があり、サブドメインを無視したい場合は、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;
}
この質問はドメイン名を尋ねるので、ホスト名ではなく、正しい答えは
window.location.hostname.split('.').slice(-2).join('.')
これは www.example.com のようなホスト名に対しても機能します。
つかいます
document.write(document.location.hostname)
window.location
にはたくさんのプロパティがあります。それらのリストについては ここ を参照してください。
あなたがフルドメインのOriginをご希望の場合は、これを使用することができます:
document.location.Origin
ドメインだけを取得したい場合は、これだけを使用できます。
document.location.hostname
しかし、他の選択肢もあります。プロパティを見てください。
document.location
JavaScriptでドメイン名を取得したい場合は、以下のコードを使用してください。
var domain_name = document.location.hostname;
alert(domain_name);
WebページのURLパスにアクセスしてWeb URLのパスにアクセスできるようにする必要がある場合は、次の例を使用してください。
var url = document.URL;
alert(url);
私の場合は、window.location.Originが最適です。
この機能はどうですか?
window.location.hostname.match(/\w*\.\w*$/gi)[0]
サブドメインかメインドメインかにかかわらず、これはドメイン名のみに一致します。
私はそれがこれと同じくらい簡単であるべきだと思います:
url.split("/")[2]
私はJavaScriptの初心者ですが、使用することはできません。document.domain?
例:
<p id="ourdomain"></p>
<script>
var domainstring = document.domain;
document.getElementById("ourdomain").innerHTML = (domainstring);
</script>
出力:
domain.com
または
www.domain.com
あなたのウェブサイトで何を使うかによります。