我正在尝试从www.domain.com
、www.domain.com/fdfds/fsdfd.php
或domain.com
获取domain.com
var parts = location.hostname.split('.');
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');
alert(upperleveldomain);
然而,如果域有www.,它就可以工作,但没有www.它就不能工作。它只给我com
如何解决此问题?有什么不同的建议吗?
正如Billy Moon在这里建议的那样,只需将主机名的"www"部分替换为一个空字符串,您(大概)就更接近您想要的:
var strLocation = location.host.replace('www.','');
alert(strLocation);
问题是,您将域名按句点字符拆分为一个数组,然后丢弃该数组的第一部分。如果URL是example.org
,则表示主机名部分,如果URL是www.example.org
,则表示www部分。
在所有情况下都使用parts.shift();
,它会删除数组的第一个元素。如果第一个元素包含字符串www
,您只需要删除它,所以您只需要检查该条件,并且只有当www存在时才需要检查shift()
。
var parts = location.hostname.split('.');
if(parts[0] === "www") {
parts.shift();
}
var upperleveldomain = parts.join('.');
alert(upperleveldomain);
如果你愿意的话,你也可以用正则表达式来解决这个问题,但你已经想出了一个非常简单的方法,只需调整一下就可以了。
一个选项可以是(编辑代码):
var parts = location.hostname.split('.');
if(parts[0].localeCompare("www") == 0)
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');
alert(upperleveldomain);
或者你可以用一个空字符串代替www.:
var newHostname = location.hostname.replace("www.","");
alert(newHostname);