我计划为同一个网站购买两个域名。根据所使用的域,我计划在页面上提供稍微不同的数据。是否有一种方法可以让我检测页面正在加载的实际域名,以便我知道要将我的内容更改为什么?
我到处找过这样的东西,但大多数都不是我想要的方式。
例如,当使用
document.write(document.location)
在JSFiddle上返回
http://fiddle.jshell.net/_display/
也就是实际的路径。
我计划为同一个网站购买两个域名。根据所使用的域,我计划在页面上提供稍微不同的数据。是否有一种方法可以让我检测页面正在加载的实际域名,以便我知道要将我的内容更改为什么?
我到处找过这样的东西,但大多数都不是我想要的方式。
例如,当使用
document.write(document.location)
在JSFiddle上返回
http://fiddle.jshell.net/_display/
也就是实际的路径。
当前回答
如果你想在JavaScript中获得域名,只需使用以下代码:
var domain_name = document.location.hostname;
alert(domain_name);
如果你需要web页面的URL路径,这样你就可以访问web URL路径使用这个例子:
var url = document.URL;
alert(url);
其他回答
你可以很容易地从Javascript中的location object中获得它:
例如,这个页面的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"
即使问题是关于域名,接受的解决方案包括子域名(如。调用location.hostname)得到blog.example.com。 为了将来的参考,我建议使用一行程序来只提取域(例如。https://blog.example.com/index.html -> example.com)作为Micheal。
location.hostname.split('.').filter(( _, i) => i < 2).join('.')
小心!当TLD由两部分组成时(例如.co.uk),它可能会崩溃。如果是这样的话,在上面的代码中修改2和3。
如果你对主机名(例如www.beta.example.com)不感兴趣,而是对域名(例如example.com)感兴趣,这适用于有效的主机名:
function getDomainName(hostName)
{
return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
如果您只对域名感兴趣,想要忽略子域,那么您需要解析出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/
如果你想要一个完整的域原点,你可以使用这个:
document.location.origin
如果你只希望得到域名,使用can you just this:
document.location.hostname
但你有其他的选择,看看属性在:
document.location