在JavaScript中确定域名?

Sha*_*que 17 javascript dns

使用之间有什么区别

if (document.domain.toLowerCase().indexOf("domainName") != -1)
Run Code Online (Sandbox Code Playgroud)

if(window.location.href.match(/:\/\/(.[^/]+)/)[1].toLowerCase().indexOf("domainName") != -1)
Run Code Online (Sandbox Code Playgroud)

if(window.location.hostname.toLowerCase().indexOf("domainName") != -1)
Run Code Online (Sandbox Code Playgroud)

我只是想在某个domainName上匹配并想要使用最好的方法.

Jos*_*ell 44

最好和最可读的将是:

if(location.hostname == "mysite.com"){

}
Run Code Online (Sandbox Code Playgroud)

更新:

或者帕特里克指出,如果你只是在寻找我会使用的部分域名match.

if(location.hostname.match('mysite')){} // will return null if no match is found
Run Code Online (Sandbox Code Playgroud)


Gra*_*ler 5

可读方法:

您可以使用endsWith()hostname字符串的结尾与域名进行比较:

location.hostname === 'stackexchange.com' || location.hostname.endsWith('.stackexchange.com')
Run Code Online (Sandbox Code Playgroud)

注意:这需要 ECMAScript 6 (ES6) 支持。

短法:

或者,如果您希望在该test()方法中使用正则表达式,您可以使用:

/(^|\.)stackexchange\.com$/.test(location.hostname)
Run Code Online (Sandbox Code Playgroud)

拆分/连接数组到字符串方法:

此外,您还可以split()hostname到一个数组基础上的.字符。然后,您可以使用 , 取最后两个元素(域名和扩展名)slice(),并将join()它们与.字符一起作为分隔符,这将允许您直接与预期的域名进行比较:

location.hostname.split('.').slice(-2).join('.') === 'stackexchange.com'
Run Code Online (Sandbox Code Playgroud)

对于以下类型的 URL,这将返回 true: