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

location对象详解

location对象

location是最有用的BOM对象之一,它提供了与当前窗口中加载的文档信息,还提供了一些导航功能。既是window对象,也是document对象的属性,即window.location和document.location引用的是同一个对象。它主要的功能有以下3点

  1. 保存当前文档的信息
  2. 导航功能
  3. 解析URL

属性

属性名例子说明
hash#contents返回url中hash模式路径,即#号后的0或者字符串,如果url不是hash模式,则返回空字符串
hostwww.wrox.com:80返回服务器和端口名称
hostnamewww.wrox.com返回不带端口号的服务器名称
hrefhttp://www.wrox.com返回完整的url,location.toString()就是返回这个对象
pathname“/file/”返回URL中的目录或者文件名
port8080返回端口号
protocolhttp:返回协议,一般为http或者https
search?=javascript返回URL查询字符串,一般以?开头

例子

以掘金地址(https://juejin.cn/search?query=async await&type=0)为例,可以看到location返回的参数

在这里插入图片描述

查询字符串参数

尽管location.search会返回?后面的所有查询参数,但是始终是以字符串的形式,没有办法将查询参数解析出来。

location.search的参数生成规则如下:

  1. &拼接参数
  2. 格式为name=value
  3. 使用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种结果:

  1. 触发窗口加载并显示指定的 url的内容
  2. 当前locationurl不是同源时,会抛出一个 SECURITY_ERROR类型错误
  3. 当传入一个无效的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对象的其他属性方法改变当前加载页面,比如hrefhashsearchpathname等等

// 将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()

以最有效的方式刷新当前页面,主要规则如下:

  1. 页面自上次请求以来并没有改变时,页面从浏览器缓存中重新加载
  2. 如果页面有所改变,则从服务器中重新加载

这个主要是request header中判断是否更新,具体参考浏览器缓存知识梳理 一文

需要强制刷新的话,可以使用location.reload(true)

**注意:**位于location.reload()调用之后的代码有可能不会执行,这取决于网络延迟或者系统资源等因素。因此,最好将location.reload()放在最后一行

location.toString()

string的方式返回**整个url地址,**如下:
在这里插入图片描述

相关文章:

location对象详解

location对象 location是最有用的BOM对象之一&#xff0c;它提供了与当前窗口中加载的文档信息&#xff0c;还提供了一些导航功能。既是window对象&#xff0c;也是document对象的属性&#xff0c;即window.location和document.location引用的是同一个对象。它主要的功能有以下…...

【强度混合和波段自适应细节融合:PAN-Sharpening】

Intensity mixture and band-adaptive detail fusion for pansharpening &#xff08;用于全色锐化的强度混合和波段自适应细节融合&#xff09; 全色锐化的目的是通过高分辨率单通道全色&#xff08;PAN&#xff09;图像锐化低分辨率多光谱&#xff08;MS&#xff09;图像&a…...

【随笔】《挥手自兹去》

挥手自兹去那样美的一束光照在我身上&#xff0c;挥手自兹去&#xff0c;下次又要何时再见&#xff1f;那日闲来无事&#xff0c;到小区前的公园里散步。绿草如因&#xff0c;野花点点&#xff0c;阳光照的人很舒服。一片空地上&#xff0c;我看见了一个女孩&#xff0c;她那么…...

华为OD机试题 - 最差产品奖(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:最差产品奖题目输入输出示例一输入输出说明Code版权说明华为OD其…...

虚拟化介绍

1、为什么需要虚拟化 据调查传统的服务器在很多时候处于休眠状态&#xff0c;大概只有5%时间是在工作&#xff0c;工作效率低下&#xff0c;浪费资源&#xff0c;因此需要一种手段来提高计算机资源的利用率。 虚拟化前 每台主机一个操作系统 在同一台主机运行多个应用程序&am…...

c/c++开发,无可避免的模板编程实践(篇十)-c++11原位构造元素(emplace)

一、容器修改器的新特性 c11以前&#xff0c;标准库的容器修改器功能提供了数据插入成员函数inset、push_back&#xff0c;而在 c11标准化&#xff0c;标准库的容器修改器增加了emplace、emplace_back、emplace_front等插入成员函数。同样是插入函数&#xff0c;两者有何区别呢…...

基于bash通过cdo批处理数据

***#################################### ubuntu中编写shell脚本文件 第一步&#xff1a;用vim创建一个以.sh结尾的文件&#xff0c;此时这个文件是暂时性的文件&#xff0c;当编写好文件并保存时才能看到文件&#xff1b; 第二步&#xff1a;要首先按一下“i”键才能进行插入…...

Map和Set总结

Map和Set Map和Set是专门用来进行搜索的数据结构&#xff0c;适合动态查找 模型 搜索的数据称为关键字(key)&#xff0c;关键字对应的叫值(value)&#xff0c;key-value键值对 key模型key-value模型 Map存储的就是key-value模型&#xff0c;Set只存储了key Map Map是接口类…...

pytorch网络模型构建中的注意点

记录使用pytorch构建网络模型过程遇到的点 1. 网络模型构建中的问题 1.1 输入变量是Tensor张量 各个模块和网络模型的输入&#xff0c; 一定要是tensor 张量&#xff1b; 可以用一个列表存放多个张量。 如果是张量维度不够&#xff0c;需要升维度&#xff0c; 可以先使用 …...

面试时候这样介绍redis,redis经典面试题

为什么要用redis做缓存 使用Redis缓存有以下几个优点&#xff1a; 1. 提高系统性能&#xff1a;缓存可以将数据存储在内存中&#xff0c;加快数据的访问速度&#xff0c;减少对数据库的读写次数&#xff0c;从而提高系统的性能。 2. 减轻后端压力&#xff1a;使用缓存可以减…...

机械学习 - scikit-learn - 数据预处理 - 2

目录关于 scikit-learn 实现规范化的方法详解一、fit_transform 方法1. 最大最小归一化手动化与自动化代码对比演示 1&#xff1a;2. 均值归一化手动化代码演示&#xff1a;3. 小数定标归一化手动化代码演示&#xff1a;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位、双通道&#xff08;5.2GSPS/通道&#xff09;、单通道10.4GSPS、射频采样ADC模块&#xff0c;该板卡为FMC标准&#xff0c;符合VITA57.1规范&#xff0c;该模块可以作为一个理想的IO单元耦合至FPGA前端&#xff0c;8通道的JE…...

理解java反射

是什么Java反射是Java编程语言的一个功能&#xff0c;它允许程序在运行时&#xff08;而不是编译时&#xff09;检查、访问和修改类、对象和方法的属性和行为。使用反射创建对象相比直接创建对象有什么优点使用反射创建对象相比直接创建对象的主要优点是灵活性和可扩展性。当我…...

EasyRcovery16免费的电脑照片数据恢复软件

电脑作为一种重要的数据储存设备&#xff0c;其中保存着大量的文档&#xff0c;邮件&#xff0c;视频&#xff0c;音频和照片。那么&#xff0c;如果电脑照片被删除了怎么办&#xff1f;今天小编给大家介绍&#xff0c;误删除的照片从哪里可以找回来&#xff0c;误删除的照片如…...

若依微服务版在定时任务里面跨模块调用服务

第一步 在被调用的模块中添加代理 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阶段&#xff1a;添加你的第一个节点并且用带外BMC接口控制它四、第 2 阶段 预配节点并使用并行 shell 对其进行管理二&#xff1a;工作流程指南1. 查找 xCAT 管理节点的服务器2. 在所选服务器上安…...

C++回顾(十九)—— 容器string

19.1 string概述 1、string是STL的字符串类型&#xff0c;通常用来表示字符串。而在使用string之前&#xff0c;字符串通常是 用char * 表示的。string 与char * 都可以用来表示字符串&#xff0c;那么二者有什么区别呢。 2、string和 char * 的比较 &#xff08;1&#xff09…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...