我计划为同一个网站购买两个域名。根据所使用的域,我计划在页面上提供稍微不同的数据。是否有一种方法可以让我检测页面正在加载的实际域名,以便我知道要将我的内容更改为什么?

我到处找过这样的东西,但大多数都不是我想要的方式。

例如,当使用

document.write(document.location)

在JSFiddle上返回

http://fiddle.jshell.net/_display/

也就是实际的路径。


当前回答

Window.location.hostname是一个好的开始。但是它包含子域,您可能想要删除这些子域。例如,如果主机名是www.example.com,你可能只需要example.com位。

像以往一样,有一些极端的情况会让这个问题变得棘手,例如bbc.co.uk。下面的正则表达式很适合我:

让hostname = window.location.hostname; //删除任何子域名,例如www.example.com -> example.com 让域= hostname.match (/^(?:.*?\.)?([ a-zA-Z0-9{3} \ \ _)。(?:\ w {2, 8} | \ w {2,4} \ \ w{2,4})) /美元)[1]; Console.log ("domain: ", domain);

其他回答

function getDomain(url, subdomain) {
    subdomain = subdomain || false;

    url = url.replace(/(https?:\/\/)?(www.)?/i, '');

    if (!subdomain) {
        url = url.split('.');

        url = url.slice(url.length - 2).join('.');
    }

    if (url.indexOf('/') !== -1) {
        return url.split('/')[0];
    }

    return url;
}

例子

getDomain www.example.com’开通:/ /);/ / example.com getDomain’www.example.com’);/ / example.com getDomain(开通:/ / blog.example.com’,true);/ / blog.example.com getDomain location.href);/ /在…

以前的版本是获得全域(包括子域)。现在它根据偏好来确定正确的域。所以当第二个参数被设为真时它将包含子域,否则它只返回"主域"

因为这个问题问的是域名,而不是主机名,所以正确答案应该是

window.location.hostname.split('.').slice(-2).join('.')

这也适用于像www.example.com这样的主机名。

如果你想在JavaScript中获得域名,只需使用以下代码:

var domain_name = document.location.hostname;
alert(domain_name);

如果你需要web页面的URL路径,这样你就可以访问web URL路径使用这个例子:

var url = document.URL;
alert(url);

如何:

window.location.hostname

location对象实际上有许多指向URL不同部分的属性

对于我的情况,最好的匹配是window.location.origin