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

LB.*_*LB. 6 javascript subdomain hostname

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

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

nic*_*ckf 17

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

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


小智 11

可以按如下方式完成:

var subdomain =  window.location.host.split('.')[1] ? window.location.host.split('.')[0] : false;
Run Code Online (Sandbox Code Playgroud)

  • 请考虑解释您的答案。 (2认同)

小智 7

这对我有用:

var host = window.location.host
var subdomain = host.split('.')[0]
Run Code Online (Sandbox Code Playgroud)

  • www 是一个子域 (11认同)
  • 这是正确的,因为 www 毕竟是一个子域。 (5认同)
  • 对于以“www”开头的主机/主机名,这可能会返回“www”作为子域。 (3认同)

Mas*_*rsy 6

const subdomain = window.location.hostname.split(".")[0]
Run Code Online (Sandbox Code Playgroud)

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


Pet*_*ley 5

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

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

在这里阅读更多

窗口位置


ten*_*ent 5

我知道这是一个老问题,但更可靠的答案是捕获所有子域。可以有嵌套的子域,例如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"
Run Code Online (Sandbox Code Playgroud)

  • 不适用于顶级域名,例如“.co.uk” (3认同)