我打算为同一个站点购买两个域名。根据使用的域,我计划在页面上提供略有不同的数据。有没有办法让我检测加载页面的实际域名,以便我知道将我的内容更改为什么?
我已经环顾四周寻找这样的东西,但大部分都没有按照我想要的方式工作。
例如当使用
document.write(document.location)
在JSFiddle 上它返回
http://fiddle.jshell.net/_display/
即实际路径或其他任何内容。
我打算为同一个站点购买两个域名。根据使用的域,我计划在页面上提供略有不同的数据。有没有办法让我检测加载页面的实际域名,以便我知道将我的内容更改为什么?
我已经环顾四周寻找这样的东西,但大部分都没有按照我想要的方式工作。
例如当使用
document.write(document.location)
在JSFiddle 上它返回
http://fiddle.jshell.net/_display/
即实际路径或其他任何内容。
假设你有这个 url 路径:
http://localhost:4200/landing?query=1#2
因此,您可以通过location values为自己服务,如下所示:
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"
现在我们可以得出您正在寻找的结论:
window.location.hostname
如果您对主机名(例如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;
}
例子
以前的版本正在获取完整域(包括子域)。现在它根据偏好确定正确的域。因此,当第二个参数被提供为 true 时,它将包含子域,否则它只返回“主域”
您可以轻松地从 Javascript 中的位置对象获取它:
例如这个页面的 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.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"