If you want to get the URL information of the site, then thewindow.location
object is suitable for you! Use its properties to get information about the current page address, or use its methods to do some page redirection or refresh
window.location.origin → '"https://segmentfault.com' .protocol → 'https:' .host → 'segmentfault.com' .hostname → 'segmentfault.com' .port → '' .pathname → '/search' .search → '?q=前端小智' .hash → '#2' .href → 'https://segmentfault.com/search?q=前端小智#2'
window.location.assign('url') .replace('url') .reload() .toString()
window.location | Return value |
---|---|
.origin | Site main address (protocol host name port ) |
.protocol | Protocol architecture (http: orhtts: ) |
.host | Domain name port |
.port | Port |
.pathname | The path followed by '/' on the first page |
.search | ? The query string followed |
.hash | Part starting from
|
#.href | Full URL |
In the above example, you may notice thathost
andhostname
Return the same value. So why these properties. Well, it's about the port number, so let's take a look.
URL without port
https://segmentfault.com/search
window.location.host; // 'segmentfault.com' window.location.hostname; // 'segmentfault.com' window.location.port; // ''
URL with port
##https://segmentfault.com/search"8080Therefore,window.location.host; // 'segmentfault.com:8080' window.location.hostname; // 'segmentfault.com' window.location.port; // '8080'Copy after login
hostwill include the port number, while
hostnamewill return only the host name.
// 开始 'https://segmentfault.com/' window.location.pathname = '/tidbits'; // 设置 pathname // 结果 'https://segmentfault.com/tidbits'
// 事例 window.location.protocol = 'https' .host = 'localhost:8080' .hostname = 'localhost' .port = '8080' .pathname = 'path' .search = 'query string' // (这里不用写 `?`) .hash = 'hash' // (这里不用写 `#`) .href = 'url'
window.location.origin, which is read-only.
window.locationReturns a
Locationobject. It gives us information about the current address of the page. But we can also access the
Locationobject in several ways.
window.location → Location window.document.location → Location document.location → Location location → Location
Locationobject. I personally prefer
window.locationand would actually avoid using
location. Mainly because
locationlooks like a normal variable, and we may sometimes accidentally name it as a variable, which will override the global variable. For example:
// https://www.samanthaming.com location.protocol; // 'https' function localFile() { const location = '/sam'; return location.protocol; // undefined // b/c local "location" has override the global variable }
windowis a global variable. That way it's less likely to cause confusion. To be honest, I didn't know
location## until I wrote this article # is a global variable. It is recommended that you usewindow.location
instead of other writing methods.
根据 MDN :
此方法返回 URL 的 USVString,它是 Location.href 的只读版本。
换句话说,我们可以这样得到href
的值:
// https://www.samanthaming.com window.location.href; // https://www.samanthaming.com window.location.toString(); // https://www.samanthaming.com
这两种方法都是重定向或导航到另一个URL。区别在于assign
是将当前页面保存在历史记录中,因此用户可以使用“后退”按钮导航到该页面。而使用replace
方法时,不会保存它。让我们来看一个例子。
Assign
1. 打开一个新的空白页 2. 输入 www.samanthaming.com (当前页) 3. 使用 `window.location.assign('https://www.w3schools.com')` 载入新页面 4. 按 "返回上一页" 5. 返回到了 ???? www.samanthaming.com
Replace
1. 打开一个新的空白页 2. 输入 www.samanthaming.com (当前页) 3. 使用 `window.location.assign('https://www.w3schools.com')` 载入新页面 4. 按 "返回上一页" 5. 返回到一个空白页
如何重定向到另一个页面,有3种方法。
window.location.href = 'https://www.samanthaming.com'; window.location.assign('https://www.samanthaming.com'); window.location.replace('https://www.samanthaming.com');
这三个都可以重定向,区别在于浏览器的历史记录。href
和assign
会把当前页面保存在历史记录中,而replace
则不会。因此,如果你想创建一种导航无法回到原始页面的体验,请使用replace
????
现在的问题是href
与assign
。我更喜欢assign
,因为它是一种方法,因此感觉好像我正在执行一些操作。还有一个额外的好处是它更易于测试。我已经编写了许多Jest
测试,因此通过使用一种方法,它使其更易于模拟。
window.location.assign = jest.fn(); myUrlUpdateFunction(); expect(window.location.assign).toBeCalledWith('http://my.url');
最终希望备忘单,希望能对你有所帮助,在需要的时候,能快速给你带来答案。谢谢大家的观看。
英文原文地址:https://morioh.com/p/b444d291bdfb
作者:Samantha Ming
译者:前端小智
更多编程相关知识,请访问:编程入门!!
Function | |
---|---|
.replace() | |
.reload() | |
.reload() | |
The above is the detailed content of Detailed explanation of window.location object in JS (cheat sheet). For more information, please follow other related articles on the PHP Chinese website!