如何使用window.location获取子域?

时间:2009-07-29 15:53:14

标签: javascript subdomain hostname

如果我有一个主机名,例如:http://sample.example.com,而在Javascript中我会window.location.hostname,我会获得“example.com”或“sample.example.com”吗?

如果没有,我怎样才能获得sample.example.com?

10 个答案:

答案 0 :(得分:16)

是的,window.location.hostname也会为您提供子域名。如果这不起作用,或者某些其他浏览器不支持,您可以很容易地解析它:

// window.location.href == "http://sample.somedomain.com/somedir/somepage.html"
var domain = /:\/\/([^\/]+)/.exec(window.location.href)[1];

答案 1 :(得分:4)

首先,它是window.location,而不是document.locationdocument.location适用于某些浏览器,但它不是标准的)

是的,location.hostname 返回整个域名,包括任何子域名

在这里阅读更多内容

Window Location

答案 2 :(得分:4)

可以按照以下方式完成:

var subdomain =  window.location.host.split('.')[1] ? window.location.host.split('.')[0] : false;

答案 3 :(得分:3)

是警报(window.location.hostname)将包含子域名,如'www'和'sample'。

答案 4 :(得分:2)

这个片段怎么样?它可能有所帮助:

var a = new String(window.location);
a = a.replace('http://','');
a = a.substring(0, a.indexOf('/'));
alert(a);

答案 5 :(得分:2)

const subdomain = window.location.hostname.split(".")[0]

window.location.hostname 返回文本包括子域-主域-ltd
因此您可以通过将其转换为数组轻松获得第一个单词,然后获得第一个项目

答案 6 :(得分:1)

我知道这是一个老问题,但是更可靠的答案是捕获所有子域。可能有嵌套的子域,例如https://my.company.website.com。为了充分捕获所有子域,我认为这是最简单的答案:

// for https://my.company.website.com,
const subdomain = window.location.hostname.split('.').slice(0, -2).join('.');
console.log(subdomain); // "my.company"

答案 7 :(得分:0)

这对我有用:

var host = window.location.host
var subdomain = host.split('.’)[0]

答案 8 :(得分:0)

通过数组解构,您可以执行以下操作:

// window.location.host = "meta.stackoverflow.com"
const [ , , subdomain] = window.location.hostname.split(".").reverse();
// console.log(subdomain);
// "meta"

答案 9 :(得分:0)

我建议使用npm软件包 psl (公共后缀列表)。您可以查看以下链接:npm psl