我想从domain.com
或www.domain.com
或www.domain.com/fdfds/fsdfd.php
domain.com
var parts = location.hostname.split('.');
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');
alert(upperleveldomain);
然而,如果该域名具有www,则可以正常运行。但没有www它不起作用。它只给我com
如何解决这个问题?有什么不同的建议吗?
答案 0 :(得分:0)
您在所有情况下都使用parts.shift();
,这会删除数组的第一个元素。如果第一个元素包含字符串www
,则只需要删除第一个元素,因此只需要在存在www时检查该条件和shift()
。
var parts = location.hostname.split('.');
if(parts[0] === "www") {
parts.shift();
}
var upperleveldomain = parts.join('.');
alert(upperleveldomain);
你可能也可以用正则表达式来解决这个问题,如果你是如此倾向 - 但是你已经想出了一个非常简单的方法来做这个应该是一个调整远离工作。
答案 1 :(得分:0)
正如Billy Moon here所建议的那样,只需用空字符串替换主机名的“www”部分即可(可能)更接近您想要的内容:
var strLocation = location.host.replace('www.','');
alert(strLocation);
问题是,您是通过句点字符将域名拆分为数组,然后丢弃该数组的第一部分。这意味着如果网址为example.org
则为主机名部分,如果网址为www.example.org
则为www部分。
答案 2 :(得分:0)
一个选项可以是(编辑代码):
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);