天天看點

前端JS如何擷取主域名(根域名)

最近項目中需要擷取url的主域名,比如<code>www.baidu.com</code>那麼就需要擷取<code>baidu.com</code>,看似簡單,<code>.</code>号分隔,取到最後兩位就行,但是坑爹的是有<code>xxx.com.cn</code>這類域名,還有很多日本的域名,類似<code>toei.aichi.jp</code>等,這些都無法通過這種簡單的取最後兩位的方式來擷取,看來隻能枚舉了。

這問題肯定是早有人就遇到了,于是各路有識之士已經幫你完整得準備好了一個清單,裡面全部都是那些奇葩域名,一些jp域名也是讓我長見識了,不知道各位老司機在秋名山飙車的時候有沒有見過這些個域名:

浏覽器其實也有内置類似的東西,用來做域名判斷,cookie存儲之類的事宜。

問題看似好像解決了,已經有現成的腳本去擷取,但是仔細一看這腳本竟然有将近200k,而我自己的腳本才10k,既然浏覽器已經内置了pls,那浏覽器有沒有暴露内置接口呢?很遺憾,搜尋了一下并沒有,而且浏覽器那麼多,即使chrome暴露了,ie肯定沒有,等等,剛剛好像我們說到浏覽器用來做域名判斷,cookie存儲,那我們能不能用這類方式間接地去調用内置pls呢?

目前想到有兩種方式可以間接去調,<code>document.doamin</code>和<code>document.cookie</code>,測試一下就會發現,如果你嘗試把目前域名設定為<code>com.cn</code>或者把cookie設定到<code>com.cn</code>上面,浏覽器并不會生效,<code>document.domain</code>在第二次設定的時候,firefox會抛錯,看來并不是很合适,而且可能多多少少會影響到業務,cookie設定友善,而且清除也友善,上代碼:

拉了差不多幾十個pls裡面的域名,跑了一下單元測試,沒有問題。

繼續閱讀