使用Javascript获取当前域名(不是path等)

我计划为同一个网站购买两个域名。 根据使用哪个域,我打算在页面上提供稍微不同的数据。 有没有办法让我检测页面加载的实际域名,以便知道如何更改我的内容?

我已经四处寻找像这样的东西,但大部分不按我想要的方式工作。

例如使用时

document.write(document.location) 

在JSFiddle它返回

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

即实际的path或任何东西。

怎么样:

 window.location.hostname 

location对象实际上有一些引用URL的不同部分的属性

如果您对主机名(例如www.beta.example.com )不感兴趣,但对域名(例如example.com )不感兴趣,则适用于有效的主机名:

 function getDomainName(hostName) { return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 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; } 

例子

  • 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); // …

以前的版本正在获得完整的域名(包括子域名)。 现在它根据偏好确定正确的域。 因此,当第二个参数被提供为true时,它将包括子域,否则它只返回“主域”

使用

 document.write(document.location.hostname)​ 

window.location有一堆属性。 看到这里的列表。

如果您只对域名感兴趣,并且想要忽略该子域,则需要将其parsing为host hostnamehostname

下面的代码是这样的:

 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/

由于这个问题要求域名, 而不是主机名称,正确的答案应该是

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

这也适用于像www.example.com这样的主机名。

如果你想要一个完整的域名来源,你可以使用这个:

 document.location.origin 

如果你只想得到域名,可以使用这个:

 document.location.hostname 

但是你有其他的select,看看下面的属性:

 document.location 

你可以很容易地从Javascript中的位置对象获取它:

例如这个页面的URL是:

 http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc 

然后我们可以得到具有以下位置对象属性的确切域:

 location.host = "www.stackoverflow.com" location.protocol= "http:" 

您可以使用以下方式创build完整的域:

 location.protocol + "//" + location.host 

在这个例子中返回http://www.stackoverflow.com

除此之外,我们可以得到完整的URL以及位置对象的其他属性的path:

 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" 

如果您想在JavaScript中获取域名,只需使用以下代码:

 var domain_name = document.location.hostname; alert(domain_name); 

如果您需要网页urlpath,以便您可以访问urlpath,请使用以下示例:

 var url = document.URL; alert(url); 

或者你可以看到这个指南

我觉得它应该像这样简单:

url.split("/")[2]