使用JavaScript获取没有子域名的域名?

pmc*_*avy 20 javascript

如何获取没有子域名的域名?

例如,如果网址是" http://one.two.roothost.co.uk/page.html "如何获得"roothost.co.uk"?

Max*_*ter 25

以下是提取没有任何子域的域名的解决方案.此解决方案不对URL格式做任何假设,因此它适用于任何URL.由于某些域名有一个后缀(.com),有些域名有两个或更多(.co.uk),为了在所有情况下获得准确的结果,我们需要使用公共后缀列表解析主机名,该列表包含所有公共域名后缀的列表.


首先,在HTML中的脚本标记中包含公共后缀列表js api,然后在JavaScript中获取可以调用的主机名:

var parsed = psl.parse('one.two.roothost.co.uk');
console.log(parsed.domain);
Run Code Online (Sandbox Code Playgroud)

...将返回"roothost.co.uk".要从当前页面获取名称,可以使用location.hostname而不是静态字符串:

var parsed = psl.parse(location.hostname);
console.log(parsed.domain);
Run Code Online (Sandbox Code Playgroud)

最后,如果您需要直接从完整的URL字符串中解析域名,可以使用以下命令:

var url = "http://one.two.roothost.co.uk/page.html";
url = url.split("/")[2]; // Get the hostname
var parsed = psl.parse(url); // Parse the domain
document.getElementById("output").textContent = parsed.domain;
Run Code Online (Sandbox Code Playgroud)

JSFiddle示例(它包含jsFiddle中的整个缩小库,所以向下滚动!):https://jsfiddle.net/6aqdbL71/2/

  • 这个解决方案对我来说很疯狂。122KB 的压缩代码添加到您的库中,如果您深入研究代码,您会得到非常静态的定义:“hgtv”、“hiphop”、“hisamitsu”、“hitachi”、“hiv”、“hkt”、“hockey”、 "holds","holiday","homedepot","homegoods","homes","homesense","honda"....我很高兴这个解决方案可用,但真的希望子域钓鱼被内置到浏览器中. (8认同)