JavaScript关于域名获取所遇到的问题

最近利用空闲时间在学习JavaScript ,我根据廖老师的教程,所知道的两种获取域名的方式(第三种是搜索的时候所了解的:))

一、

var {hostname: domain, pathname: path} = location

二、操作location 对象,通过它的host 属性  

location.host

三、操作document 对象,通过它的domain 属性

document.domain

问题来了,当我看到第二种方法的时候,结合第一种方法,我就认为location 应该会有domain 和 path 这两个属性,但是事实上并没有,直接在操作台输出location.domain 有时候报错,有时候 显示underined,百度了一下,有发现了另外一个获取域名的方法,是操作document 对象的domain ,也就是document.domain’。

解释:这里是被后续查到的document.domain 所误导,导致自己 单方面的认为location 应该存在domain 这个属性,所以才搞了这么个大乌龙。

关于document.domain 和location.host这俩种方式获取域名的方式,具体有什么不同,我在别的网站上看到了一位大佬以在电脑端访问手机端的网页为例子,可以得出document.domain,和location.host的 不同之处,在https://3gqq.qq.com/ 这个网页中,分别得到的结果是:

document.domain    // qq.com

location.host    // 3gqq.com

 具体的不同及原因,后续有时间会跟进,也欢迎有了解的大佬在下面留言或者留下传送门

顺便再说一下location.host 与location.hostname 的区别:

location.host 包含端口 

location.hostname 不包含端口

比如一个url 是:127.0.0.1:81

location.host    // 127.0.0.1:81
location.hostname    // 127.0.0.1

另外一个url 是 :127.0.0.1:80

location.host    // 127.0.0.1
location.hostname    // 127.0.0.1

而目前大部分情况下我们用的都是80 的端口,所以在host 属性下,默认省略了(就像你使用location.port,返回一个空字符串一样),所以就新的这两个属性(host 与hostname)的值是一样的。

参考资料:

location.hostname和document.domain有什么区别?都是获取域名的 :https://segmentfault.com/q/1010000013677512/a-1020000013677787

location.host 与 location.hostname 的区别: https://blog.csdn.net/zhouzilong502086525/article/details/6213478 

原文地址:https://www.cnblogs.com/yungiu/p/11511198.html