当前位置: 首页 > news >正文

前端基础location的使用

概念

获取当前页面的地址信息,还可以修改某些属性,实现页面跳转和刷新等。

 样例展示

window.location 含义.originURL 基础地址,包括协议名、域名和端口号.protocol协议 (http: 或 https:).host域名+端口号.hostname域名.port端口号.pathname路径(以/开头).search查询字符串,以?开头.hash页面锚点,以#开头.href完整 URL

比较容易混淆的是hosthostname这两个属性,区别是前者还包含了端口号。

修改属性值

以上属性除了origin是只读属性,其他都可以修改。修改后的效果就是跳转到相应的新地址。

属性一览表

方法一览表

.assign()导航到指定 URL.replace()导航到指定 URL并删除当前页面的访问记录.reload()重新加载当前页面.toString()返回 URL 字符串

.toString().href都是返回 URL,它们之间有区别吗?结果是一样的,性能上稍微有点差别。通过 JSPerf 上的性能测试结果可以看出,.href稍快,通过window.location拼接字符串的形式速度最慢。

.assign() 和直接修改href是等价的,那么它们跟.replace()的区别是什么呢?

.assign() 在跳转新地址的同时会留下当前页面的访问记录,点击浏览器返回按钮会回到原来的页面,.replace()则不会保留。

场景1:页面跳转锦集

location.href='https://www.baidu.com'
window.open('http://www.baidu.com','_self')
location.assign('http://www.baidu.com')
location.replace('http://www.baidu.com')
<a href="https://www.baidu.com">跳转</a>
  • 页面中跳转固定的地址
function imitateClick(url){let aEle = document.createElement("a");aEle.setAttribute("href", url);aEle.setAttribute("target", "_blank");aEle.setAttribute("id", "previewJumpEle");// 防止重复添加if (!document.getElementById("previewJumpEle")) {document.body.appendChild(aEle);}// 模拟点击aEle.click();(aEle.remove && aEle.remove()) || (aEle.removeNode && aEle.removeNode(true));
};
imitateClick('https://www.baidu.com');

  • js中直接做无感跳转,但是此方法有个弊端:经过验证,有的浏览器可能会拦截,慎用。

<meta http-equiv="refresh" content="5;url=http://www.w3school.com.cn">

场景2:检测协议并提示用户

if (location.protocol == 'http:') {this.$confirm('确定吗?').then(() => {location.href = 'https://www.baidu.com'})}

http://www.lryc.cn/news/265511.html

相关文章:

  • Android JNI入门到基础
  • 60.乐理基础-打拍子-V字打拍法
  • 列表对象的时间进行中文格式化处理
  • vi和vim的区别
  • 【昆明*线上同步】最新ChatGPT/GPT4科研实践应用与AI绘图技术及论文高效写作
  • 【解决Typora图片不是显示问题】PicGo+Github+Typora+ onedrive/坚果云 实现笔记同步
  • 使用Guava轻松创建和管理不可变集合
  • 深入了解 Android 中的应用程序签名
  • 说说 style gan 中的感知路径长度(Perceptual Path Length)
  • 基于JAVA的厦门旅游电子商务预订系统 开源项目
  • uniapp中使用封装步骤条组件
  • 【MySQL】sum 函数和 count 函数的相同作用
  • 在QT Creator下用CMake编译GEOS库
  • 【Qt之Quick模块】4. QML语法格式及命名规范
  • Python内置类属性__class__属性的使用教程
  • 【后台报错】插入时sql报错,varchar撑爆
  • OpenSergo使用详解
  • Vanilla Pro for Mac 一款隐藏菜单栏图标工具
  • freemarkEngine文件ftl的可视化编辑
  • 2023 英特尔On技术创新大会直播 | 边云协同加速 AI 解决方案商业化落地
  • Q-star计划的更多细节
  • python3 数据分析项目案例,用python做数据分析案例
  • Android 12 (InputMethodManagerService) 替换默认输入法为Pinyin输入法
  • 【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战
  • 【XML】TinyXML 详解
  • 泛社交裂变场景下AB增量科学评估方案
  • 【无标题】json报错
  • MyBatis中延迟加载,全局和局部的开启使用与关闭
  • MyBatis增删改查基础及其xml文件
  • 视觉学习(1)—— 理论