location.href=url 和 location.assign(url) 和 location.replace(url) 和 location.reload()

location.href=url 和 location.assign(url) 和 location.replace(url) 和 location.reload()

  • location.href=url 效果类似 location.assign(url) , 相当于跳转新页面, 可以后退
  • location.replace(url) , 是改变当前页面的地址, 不能后退
  • location.reload() , 作用是刷新, 没有参数
location.href

在这里插入图片描述

location===window.location
true
location===document.location
true
location===window.document.location
true

MDN说: Location 接口的 href 属性是一个字符串化转换器 (stringifier), 返回一个包含了完整 URL 的 USVString 值,且允许 href 的更新。

location.href是可以读写的,可以赋值和取值
  • url = location.href 取值时, 等同于 url = document.URLurl = document.documentURI
  • 当赋值时, location.href=urllocation.assign(url) 近似或相同
location.assign(url)

MDN: Location.assign()

Location.assign() 方法会触发窗口加载并显示指定的 URL 的内容。

如果由于安全原因无法执行跳转,那么会抛出一个 SECURITY_ERROR 类型的 DOMException。当调用此方法的脚本来源和页面的 Location 对象中定义的来源隶属于不同域的时候,就会抛出上述错误。

如果传入了一个无效的 URL,则会抛出一个 SYNTAX_ERROR 类型的 DOMException。

location.replace(url)

MDN: Location.replace()

Location.replace() 方法以给定的 URL 来替换当前的资源。与 assign() 方法 不同的是,调用 replace() 方法后,当前页面不会保存到会话历史中(session History),这样,用户点击回退按钮时,将不会再跳转到该页面。

因违反安全规则导致的赋值失败,浏览器将会抛出类型为 SECURITY_ERROR 的 DOMException 异常。当调用该方法的脚本所属的源与拥有 Location 对象所属源不同时,通常情况会发生这种异常,此时通常该脚本是存在不同的域下。

如果 URL 无效,浏览器也会抛出 SYNTAX_ERROR 类型的 DOMException 异常。

location.reload()

MDN: location.reload() 方法用来刷新当前页面,就像刷新按钮一样。

该方法在跨域调用(执行该方法的脚本文件的域和 Location 对象所在页面的域不同)时,将会抛出 SECURITY_ERROR DOMException 异常。有关更多信息,请参阅浏览器的同源策略。

MDN: location.reload() 没有参数 ,(标准没有参数, Firefox特殊)
location.reload() 没有参数
Firefox 对于该方法支持一个非标准的 forceGet boolean 参数 ,当值为 true 时,将强制 Firefox 从服务器加载页面资源。但是在其他浏览器中任何参数都是无效的,location.reload() 执行时将会忽略它们并且不会有任何效果。

不过你可能会看到在现有的代码中写入 location.reload(true) 并假装硬性重新加载在所有浏览器中均生效的使用方式。在 GitHub 中搜索 “location.reload(true)” 将会得到 成千上万个结果。所以现在有大量的现有代码中包含它。

由于一些历史的原因,网景浏览器的一些版本添加了对它的支持,显然被继承到了 Firefox 中。并且一度被 W3C Web APIs 工作组作为一个提案来考虑添加到 location.reload() 中。但是它从未实际实现过。

因此 boolean 参数当前不符合 location.reload() 的规范。— 实际上它从未成为 location.reload() 的规范。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kfepiza

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值