我正在处理从window.location.hostname
读取域的chrome扩展程序。现在,为了使此扩展能够正常工作,我需要能够将子域和其他URL变体分离到同一主机。例如:
我需要以下所有网址:s
www.google.com
accounts.google.com
photos.google.se
example.google.co.uk
https://google.com
所有这些都需要解决,在这种情况下," google",以可靠的方式解决,并且适用于任何有时候古怪的子域配置的网站。
这是我目前的方法,有点简化:
var url = window.location.hostname.split(".") //returns an array of strings
for(i=0;i<url.length;i++){
if(url[i].match(domainregex) //regex for identifying domains ".com",".se",".co.uk" etc
return url[i-1] //usually what I'm after is directly before the domain, thus i-1
}
这种方法很麻烦,有时候证明不可靠......有没有更直接的方法呢?
答案 0 :(得分:5)
剥离顶级域名部分并获取主域名部分的更可靠的解决方案是使用Firefox和Chrome以及其他浏览器使用的Public Suffix List。
如果您不想编写自己的列表数据,则可以使用答案 1 :(得分:0)
我必须为我的编辑 - 我的cookie分叉,所以它将能够更改每个站点的cookie的配置文件。 (https://github.com/AminaG/swap-my-cookies-multisite/blob/master/js/tools.js)
这就是我所做的,它对我有用。我确信如果不是完整的解决方案,但我相信它可以提供帮助。
if self.orderDirection == .Ascending {
它适用于:
var remove_sub_domain=function(v){
var is_co=v.match(/\.co\./)
v=v.split('.')
v=v.slice(is_co ? -3: -2)
v=v.join('.')
console.log(v)
return v
}
如果您希望它也适用于:
www.google.com
accounts.google.com
photos.google.se
example.google.co.uk
google.com
首先需要删除协议:
http://gooogle.com