Javascript 如何在没有www的情况下显示域名,但即使用户进入domain.com(没有www)也能正常工作

Javascript 如何在没有www的情况下显示域名,但即使用户进入domain.com(没有www)也能正常工作,javascript,Javascript,我正在尝试从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 var p

我正在尝试从
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

var parts = location.hostname.split('.');
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');
alert(upperleveldomain);

如何解决这个问题?有什么不同的建议吗?

您使用的是
parts.shift()
在所有情况下,都会删除数组的第一个元素。只有当第一个元素包含字符串
www
时,才需要删除该元素,因此只需检查该条件,并且仅当www存在时才需要检查
shift()

var parts = location.hostname.split('.');
if(parts[0] === "www") {
    parts.shift();
}
var upperleveldomain = parts.join('.');
alert(upperleveldomain);
如果你愿意的话,你也可以用正则表达式来解决这个问题,但是你已经想出了一个非常简单的方法来解决这个问题,这应该离工作还有一步之遥

正如所建议的,只需将主机名的“www”部分替换为空字符串,您(大概)就更接近您想要的:

var strLocation = location.host.replace('www.','');
alert(strLocation);
问题是,您正在按句点字符将域名拆分为一个数组,然后丢弃该数组的第一部分。这意味着如果URL为
example.org
,则主机名部分;如果URL为
www.example.org
,,则www部分可以是一个选项(编辑代码):

或者,您可以将www.替换为空字符串:

var newHostname = location.hostname.replace("www.","");
alert(newHostname);

子路径不是您的域名的一部分。它后面的路径是Apache路径变量或GET参数(在
之后)。你需要从你的域名中分别获取这些。OP不关心查询字符串,他们只是试图获取domain.com-因此,虽然这是真的,但没关系。谢谢你的回答,但我发现很多正则表达式,它们都不起作用。。。我认为这是一件非常简单的事情,它让我发疯-我的答案的第一段应该解决你的问题。您只需检查数组中的第一项是否为“www”,如果不是,请不要执行.split()。@Xalloumokkelos-这个答案对您有用吗?如果你接受任何有助于你解决问题的答案,这将是很有帮助的,因为这就是为未来的访问者标记好答案的方式!