location对象详解
location对象
location是最有用的BOM对象之一,它提供了与当前窗口中加载的文档信息,还提供了一些导航功能。既是window对象,也是document对象的属性,即window.location和document.location引用的是同一个对象。它主要的功能有以下3点
- 保存当前文档的信息
- 导航功能
- 解析URL
属性
| 属性名 | 例子 | 说明 |
|---|---|---|
| hash | #contents | 返回url中hash模式路径,即#号后的0或者字符串,如果url不是hash模式,则返回空字符串 |
| host | www.wrox.com:80 | 返回服务器和端口名称 |
| hostname | www.wrox.com | 返回不带端口号的服务器名称 |
| href | http://www.wrox.com | 返回完整的url,location.toString()就是返回这个对象 |
| pathname | “/file/” | 返回URL中的目录或者文件名 |
| port | 8080 | 返回端口号 |
| protocol | http: | 返回协议,一般为http或者https |
| search | ?=javascript | 返回URL查询字符串,一般以?开头 |
例子
以掘金地址(https://juejin.cn/search?query=async await&type=0)为例,可以看到location返回的参数

查询字符串参数
尽管location.search会返回?后面的所有查询参数,但是始终是以字符串的形式,没有办法将查询参数解析出来。
location.search的参数生成规则如下:
- 用
&拼接参数 - 格式为
name=value - 使用
encodeURIComponent()加密
为此,可以根据URL查询参数生成的规则创建一个解析参数函数,如下:
function getQueryStringArgs() {// 取得要查询的字符串并去掉开头的问号var qs = (location.search.length > 0 ? location.search.substring(1) : ""),args = {},items = qs.length ? qs.split("&"): [],item = null,name = null,value = null,// 在for 循环中使用i = 0,len = items.length;// 逐个将每一项目添加到args对象中for (i; i < len; i++) {item = items[i].split("=");name = decodeURIComponent(item[0]);value = decodeURIComponent(items[1]);if (name.length) {args[name] = value}}console.log(args);return args;
}
踩坑记录
mdn中找到这样子一段话
现代浏览器提供
[URLSearchParams](https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams/get#examples)和[URL.searchParams](https://developer.mozilla.org/zh-CN/docs/Web/API/URL/searchParams#examples)两个接口,使得从查询字符串中解析出查询参数变得更加容易。
但是他们下面都备注了一句话:

所以实际上在控制台使用这两个函数,并不能解析出查询参数,如下:

位置操作
跳转—location.assign()
改变浏览器位置,主要用法为location.assign(url) ,大概会返回以下3种结果:
- 触发窗口加载并显示指定的
url的内容 - 当前
location和url不是同源时,会抛出一个SECURITY_ERROR类型错误 - 当传入一个无效的
url时,会抛出一个SYNTAX_ERROR类型
替换—location.replace()
替换当前资源,与 [assign()](https://developer.mozilla.org/zh-CN/docs/Web/API/Location/assign)方法不同的是,调用 replace()方法后,当前页面不会保存到会话历史中,即无法点击回退按钮回退
// 语法
object.replace(url);// 示例
object.replace('http://www.baidu.com');
其他
可以通过修改location对象的其他属性方法改变当前加载页面,比如href、hash、search、pathname等等
// 将url改为http://baidu.com
location.href = 'http://baidu.com';// 改为http://baidu.com/#section
location.hash = '#section';// 改为http://baidu.com/?keyword=css
location.search = '?keyword=css';// 改为http://baidu.com/mydir
location.pathname = 'mydir';// 改为https://juejin.cn/
location.hostname='juejin.cn'// 将端口改为8080
location.port = '8080'
**注意:**每次修改location属性(hash除外),都会重新刷新页面

刷新页面—location.reload()
以最有效的方式刷新当前页面,主要规则如下:
- 页面自上次请求以来并没有改变时,页面从浏览器缓存中重新加载
- 如果页面有所改变,则从服务器中重新加载
这个主要是request header中判断是否更新,具体参考浏览器缓存知识梳理 一文
需要强制刷新的话,可以使用location.reload(true)
**注意:**位于location.reload()调用之后的代码有可能不会执行,这取决于网络延迟或者系统资源等因素。因此,最好将location.reload()放在最后一行
location.toString()
以string的方式返回**整个url地址,**如下:

相关文章:
location对象详解
location对象 location是最有用的BOM对象之一,它提供了与当前窗口中加载的文档信息,还提供了一些导航功能。既是window对象,也是document对象的属性,即window.location和document.location引用的是同一个对象。它主要的功能有以下…...
【强度混合和波段自适应细节融合:PAN-Sharpening】
Intensity mixture and band-adaptive detail fusion for pansharpening (用于全色锐化的强度混合和波段自适应细节融合) 全色锐化的目的是通过高分辨率单通道全色(PAN)图像锐化低分辨率多光谱(MS)图像&a…...
【随笔】《挥手自兹去》
挥手自兹去那样美的一束光照在我身上,挥手自兹去,下次又要何时再见?那日闲来无事,到小区前的公园里散步。绿草如因,野花点点,阳光照的人很舒服。一片空地上,我看见了一个女孩,她那么…...
华为OD机试题 - 最差产品奖(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:最差产品奖题目输入输出示例一输入输出说明Code版权说明华为OD其…...
虚拟化介绍
1、为什么需要虚拟化 据调查传统的服务器在很多时候处于休眠状态,大概只有5%时间是在工作,工作效率低下,浪费资源,因此需要一种手段来提高计算机资源的利用率。 虚拟化前 每台主机一个操作系统 在同一台主机运行多个应用程序&am…...
c/c++开发,无可避免的模板编程实践(篇十)-c++11原位构造元素(emplace)
一、容器修改器的新特性 c11以前,标准库的容器修改器功能提供了数据插入成员函数inset、push_back,而在 c11标准化,标准库的容器修改器增加了emplace、emplace_back、emplace_front等插入成员函数。同样是插入函数,两者有何区别呢…...
基于bash通过cdo批处理数据
***#################################### ubuntu中编写shell脚本文件 第一步:用vim创建一个以.sh结尾的文件,此时这个文件是暂时性的文件,当编写好文件并保存时才能看到文件; 第二步:要首先按一下“i”键才能进行插入…...
Map和Set总结
Map和Set Map和Set是专门用来进行搜索的数据结构,适合动态查找 模型 搜索的数据称为关键字(key),关键字对应的叫值(value),key-value键值对 key模型key-value模型 Map存储的就是key-value模型,Set只存储了key Map Map是接口类…...
pytorch网络模型构建中的注意点
记录使用pytorch构建网络模型过程遇到的点 1. 网络模型构建中的问题 1.1 输入变量是Tensor张量 各个模块和网络模型的输入, 一定要是tensor 张量; 可以用一个列表存放多个张量。 如果是张量维度不够,需要升维度, 可以先使用 …...
面试时候这样介绍redis,redis经典面试题
为什么要用redis做缓存 使用Redis缓存有以下几个优点: 1. 提高系统性能:缓存可以将数据存储在内存中,加快数据的访问速度,减少对数据库的读写次数,从而提高系统的性能。 2. 减轻后端压力:使用缓存可以减…...
机械学习 - scikit-learn - 数据预处理 - 2
目录关于 scikit-learn 实现规范化的方法详解一、fit_transform 方法1. 最大最小归一化手动化与自动化代码对比演示 1:2. 均值归一化手动化代码演示:3. 小数定标归一化手动化代码演示:4. 零-均值标准化(均值移除)手动与自动化代码演示&#x…...
华为OD机试题 - 最长连续交替方波信号(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:最长连续交替方波信号题目输入输出示例一输入输出Code解题思路版…...
executor行为相关Spark sql参数源码分析
0、前言 参数名和默认值spark.default.parallelismDefault number of partitions in RDDsspark.executor.cores1 in YARN mode 一般默认值spark.files.maxPartitionBytes134217728(128M)spark.files.openCostInBytes4194304 (4 MiB)spark.hadoop.mapreduce.fileoutputcommitte…...
双通道5.2GSPS(或单通道10.4GSPS)射频采样FMC+模块
概述 FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道的JE…...
理解java反射
是什么Java反射是Java编程语言的一个功能,它允许程序在运行时(而不是编译时)检查、访问和修改类、对象和方法的属性和行为。使用反射创建对象相比直接创建对象有什么优点使用反射创建对象相比直接创建对象的主要优点是灵活性和可扩展性。当我…...
EasyRcovery16免费的电脑照片数据恢复软件
电脑作为一种重要的数据储存设备,其中保存着大量的文档,邮件,视频,音频和照片。那么,如果电脑照片被删除了怎么办?今天小编给大家介绍,误删除的照片从哪里可以找回来,误删除的照片如…...
若依微服务版在定时任务里面跨模块调用服务
第一步 在被调用的模块中添加代理 RemoteTaskFallbackFactory.java: package com.ruoyi.rpa.api.factory;import com.ruoyi.common.core.domain.R; import com.ruoyi.rpa.api.RemoteTaskService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springf…...
SpringMVC简单配置
1、pom.xml配置 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.12.RELEASE</version></dependency></dependencies><build><…...
xcat快速入门工作流程指南
目录一、快速入门指南一、先决条件二、准备管理节点xcatmn.mydomain.com三、第1阶段:添加你的第一个节点并且用带外BMC接口控制它四、第 2 阶段 预配节点并使用并行 shell 对其进行管理二:工作流程指南1. 查找 xCAT 管理节点的服务器2. 在所选服务器上安…...
C++回顾(十九)—— 容器string
19.1 string概述 1、string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是 用char * 表示的。string 与char * 都可以用来表示字符串,那么二者有什么区别呢。 2、string和 char * 的比较 (1)…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
