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

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

例如,当使用

document.write(document.location)

在JSFiddle上返回

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

也就是实际的路径。


当前回答

结合上面的一些答案,以下是我销毁cookie的有效方法:

  /**
   * Utility method to obtain the domain URI:
   */
  fetchDomainURI() {
    if (window.location.port.length > 0) {
      return window.location.hostname;
    }
    return `.${window.location.hostname.match(/\w*\.\w*$/gi)[0]}`;
  }

适用于具有端口的IP地址,例如,0.0.0.0:8000等,以及复杂的域,如app.staging.example.com返回。example.com =>允许跨域Cookie设置和销毁。

其他回答

如何:

window.location.hostname

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

结合上面的一些答案,以下是我销毁cookie的有效方法:

  /**
   * Utility method to obtain the domain URI:
   */
  fetchDomainURI() {
    if (window.location.port.length > 0) {
      return window.location.hostname;
    }
    return `.${window.location.hostname.match(/\w*\.\w*$/gi)[0]}`;
  }

适用于具有端口的IP地址,例如,0.0.0.0:8000等,以及复杂的域,如app.staging.example.com返回。example.com =>允许跨域Cookie设置和销毁。

我觉得应该这么简单:

url.split("/")[2]

您可以使用它来删除端口号。

var 主机名 = 窗口.位置.主机; var urlWithoutPort = 'https://${hostname}'; console.log(urlWithoutPort);

https://publicsuffix.org/list/

(https://github.com/publicsuffix/list/blob/master/public_suffix_list.dat)

需要正确地解析出所有没有后缀的域,在上面的答案中使用点永远不会完全正确。可以对公共后缀dat文件运行上面的代码样例来实现这一点。

您可以基于此编写自己的代码,或者使用https://www.npmjs.com/package/tldts这样的包

getDomainWithoutSuffix('google.com');        // returns `google`
getDomainWithoutSuffix('fr.google.com');     // returns `google`
getDomainWithoutSuffix('fr.google.google');  // returns `google`
getDomainWithoutSuffix('foo.google.co.uk');  // returns `google`
getDomainWithoutSuffix('t.co');              // returns `t`
getDomainWithoutSuffix('fr.t.co');           // returns `t`
getDomainWithoutSuffix('https://user:password@example.co.uk:8080/some/path?and&query#hash'); // returns `example`