使用之间有什么区别
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)
您可以使用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: