如果我有一个主机名,例如:http://sample.example.com,而在Javascript中我会window.location.hostname
,我会获得“example.com”或“sample.example.com”吗?
如果没有,我怎样才能获得sample.example.com?
答案 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.location
(document.location
适用于某些浏览器,但它不是标准的)
是的,location.hostname
将返回整个域名,包括任何子域名
在这里阅读更多内容
答案 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