window.location.href的介绍及使用

news2024/11/15 18:55:24

目录

介绍:

获取当前 URL

设置新的 URL

URL 的组成部分

解析 URL 参数

什么是片段标识符的URL?

使用new URL:

 输出的部分解释:

 假如我们需要获取路径上的最后一级的路径名:


介绍:

window.location.href 是 JavaScript 中一个非常常用的属性,它用于获取或设置当前窗口或标签页的 URL。这个属性返回的是完整的 URL

获取当前 URL

简单地使用 获取当前页面的 URL:

console.log(window.location.href);
 // 输出 "https://mp.csdn.net/mp_blog/creation/editor?param=value#section"

设置新的 URL

赋值一个新的 URL 字符串,浏览器会立即跳转到那个新的页面,比如下面的跳转到谷歌了

window.location.href = "https://www.google.com"; 
// 浏览器会跳转到 Google 的主页

URL 的组成部分

一个 URL 通常由以下几个部分组成:

  • 协议(例如 http:https:
  • 域名(例如 www.example.com
  • 端口(可选,例如 :8080
  • 路径(例如 /page/subpage
  • 查询参数(可选,例如 ?param1=value1&param2=value2
  • 片段标识符(可选,例如 #section

如果想清楚的了解,可以控制台输出这个看看:(下面有简单的讲到)

console.log(new URL(window.location.href));

解析 URL 参数

 他本身不直接提供解析查询参数的功能,但你可以使用 JavaScript 来手动解析它们,可以使用 URLSearchParams 接口来解析查询字符串

const queryParamsString = "param1=value1&param2=value2";  
const queryParams = new URLSearchParams(queryParamsString);  
  
console.log(queryParams.get('param1')); // 输出 "value1"  
console.log(queryParams.get('param2')); // 输出 "value2"

在实际中,其实你也可以使用 window.location.search(它包含从问号(?)开始的 URL 部分)中获取查询参数,而不是直接提供一个字符串。例如:

const queryParams = new URLSearchParams(window.location.search);  
console.log(queryParams.get('param1')); // 输出查询参数 param1 的值(如果有的话)

什么是片段标识符的URL?

URL的末尾使用#符号后跟一个标识符指定的。这个片段标识符通常用于标识文档(如HTML页面)内的某个位置,如特定的段落标题锚点(anchor)。

通俗的讲就是一个在当前页面的跳转到一个具体的位置,就如上面的目录点击跳转到n级标题,其实就是一个更加简便的操作

当用户点击或浏览器导航到带有片段标识符的URL时,浏览器会自动滚动到该标识符所指向的文档位置。这对于创建指向页面内特定部分的链接非常有用,而无需使用额外的导航或滚动

例如,在HTML页面中,你点击了下面的a标签:

<a href="https://example.com/page#yourCase">跳转到 yourCase </a>

浏览器会导航到https://example.com/page页面,并自动滚动到页面上ID为yourCase的元素(如果页面上存在这样的元素)。这个ID通常是通过HTML元素的id属性来设置的,如:

<div id="yourCase">  yourCase 的内容   </div>

需要注意的是,片段标识符并不会被发送到服务器,它们只在客户端(即用户的浏览器)中使用。因此,它们不会影响服务器端的页面加载或处理

使用new URL:

创建一个新的 URL 对象,该对象基于当前浏览器窗口的 URL(window.location.href)。这个 URL 对象提供了很多方法和属性,用于解析、查询和操作 URL

new URL(window.location.href)

如下图所示,我们在当前页面输出了:

其实你只要知道输出的是啥就可以了,并不需要具体的去了解他

 输出的部分解释:

  1. href:完整的 URL 字符串。这和你传入 new URL() 的 window.location.href 是一样的。
  2. protocol:URL 的协议部分,例如 "http:" 或 "https:"
  3. hostname:URL 的主机名,不包括端口。例如,对于 URL "https://www.example.com:8080/path",hostname 会是 "www.example.com"
  4. port:URL 的端口号。如果没有明确指定端口(例如使用 HTTP 的默认 80 端口或 HTTPS 的默认 443 端口),则这个属性可能是一个空字符串。
  5. pathname:URL 的路径部分,从 "/" 开始。例如,对于 URL "https://www.example.com/path/to/resource",pathname 会是 "/path/to/resource"
  6. search:URL 的查询部分(包括 "?"),如果没有查询部分,则为空字符串。
  7. hash:URL 的 "fragment" 部分(从 "#" 开始的部分),如果没有这部分,则为空字符串

 假如我们需要获取路径上的最后一级的路径名:

这个的话我们可以设置一些条件,当我们获取到的最后一级的路径达到要求时(存在xx时),进行某些操作,

比如下方,在请求中进行强制的退出登录操作,设置了不会进行退出的页面。

function getLastPath() {  

  const fullUrl = window.location.href;  
  // 创建URL对象  
  const url = new URL(fullUrl);
  // 去除查询参数  
  const pathWithoutQuery = url.pathname;  
  // 获取路径的最后一级(最后一个'/'之后的部分)  
  const lastSegment = pathWithoutQuery.substring(pathWithoutQuery.lastIndexOf('/') + 1);  

  return lastSegment;  
}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1665907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vscode默认终端设置为cmd的方法

vscode默认终端是powershell,执行某些命令时会提示权限等问题&#xff0c;如果更习惯使用cmd终端的话&#xff0c;可以将默认终端配置为cmd。 方法一&#xff1a; 方法二&#xff1a; 如果你想更改默认的终端&#xff0c;可以通过以下步骤操作&#xff1a; 打开 VSCode。使用…

【QT学习】补充:qt使用已经存在的类

1.右键项目--》添加现有文件 注意&#xff1a;不是添加新文件&#xff01;&#xff01;&#xff01; 2.添加配置

Ubuntu24安装搜狗输入法,修复闪屏问题

下载deb安装包&#xff1a;搜狗输入法linux-首页 安装&#xff1a;sudo dpkg -i 1.deb 搜狗输入法linux-安装指导 重启&#xff0c;但是完成后闪烁。按以下步骤更改桌面配置。 sudo gedit /etc/gdm3/custom.conf 取消WaylandEnable的注释即可

【免费Java系列】大家好 ,今天是学习面向对象高级的第十二天点赞收藏关注,持续更新作品 !

这是java进阶课面向对象第一天的课程可以坐传送去学习http://t.csdnimg.cn/Lq3io day10-多线程 一、多线程常用方法 下面我们演示一下getName()、setName(String name)、currentThread()、sleep(long time)这些方法的使用效果。 public class MyThread extends Thread{publi…

sklearn之线性回归——以上证红利指数为例

文章目录 线性回归概念使用sklearn实现上证中立指数预测内置数据集的加载与处理 外部数据集的加载和处理数据内容数据加载和处理 开始预测分割数据集导入线性回归模型查看线性回归模型的系数绘制预测结果预测效果评估 最终代码 线性回归 线性回归&#xff08;Linear Regressio…

Linux·基本指令

从本节开始将新开一个关于Linux操作系统的板块&#xff0c;其实Linux也没什么太神秘的&#xff0c;就是一个操作系统(OS)嘛&#xff0c;跟Windows操作系统是一个概念&#xff0c;只不过Windows中的大部分操作都是用光标点击来进行人机交互&#xff0c;但是Linux是通过输入命令行…

AIGC、LLM 加持下的地图特征笔记内容生产系统架构设计

文章目录 背景构建自动化内容生产平台系统架构设计架构详细设计流程介绍笔记来源笔记抓取干预 笔记 AIGC 赋能笔记 Rule 改写笔记特征库构建 附录Bash Cron 定时任务Golang 与 Pyhon AIGC 实践 小结 背景 在大模型的浪潮下&#xff0c;ChatGPT、Sora、Gemini、文言一心 等新技…

LoRaWAN入门

1.文档资料 飞书云文档 (feishu.cn) G43室内LoRaWAN网关 - doc.alinkwise.com > LoRaWAN网关&#xff08;基站&#xff09; > G4x > G43室内LoRaWAN网关 2.简介 LoRa: 远距离无线电&#xff08;long rang radio), 它最大特点就是在同样的功耗条件下比其他无线方式…

《构建合同中台系统:实现合同管理的集成化与智能化》

随着企业数字化转型的深入推进&#xff0c;合同管理作为企业日常运营的重要组成部分&#xff0c;也在不断演进与升级。传统的合同管理方式已经无法满足企业对于效率、合规性和智能化的需求&#xff0c;因此&#xff0c;构建合同中台系统成为了当下企业迫切需要解决的问题。 **1…

Vue中进行粘贴板粘贴数据(图片、文字等)

在页面中如果需要进行粘贴数据&#xff0c;那么就要读取系统粘贴板clipboard&#xff0c;通过此Api来进行粘贴板数据的操作。 目录: 一.封装相关函数1.示例代码&#xff1a;2.代码解释&#xff1a; 二.页面中进行粘贴1.代码示例&#xff1a;2.代码解释&#xff1a; 三.运行结果…

C数据结构:队列

目录 队列是什么&#xff1f; 队列的实现 队列的数据结构 队列的初始化 队列的插入 队列的删除 获取队列队头元素 获取队列队尾元素 获取队列元素个数 检查队列是否为空 队列的销毁 队列的使用 完整代码 队列是什么&#xff1f; 队列也是顺序表中的一种 队列和栈…

Python-VBA函数之旅-staticmethod函数

目录 一、staticmethod函数的常见应用场景 二、staticmethod函数使用注意事项 三、如何用好staticmethod函数&#xff1f; 1、staticmethod函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://blog…

Linux(Ubuntu24.04) 安装 MinIO

本文所使用的 Ubuntu 系统版本是 Ubuntu 24.04 ! # 1、下载 MinIO wget https://dl.min.io/server/minio/release/linux-amd64/minio# 2、添加可执行权限 chmod x minio# 3、导出环境变量&#xff0c;用于设置账号密码&#xff0c;我设置的账号和密码都是 minioadmin export MI…

【数据结构练习题】Map与Set——1.只出过一次的数字2.复制带随机指针的链表3.宝石与石头4.坏键盘打字

♥♥♥♥♥个人主页♥♥♥♥♥ ♥♥♥♥♥数据结构练习题总结专栏♥♥♥♥♥ ♥♥♥♥♥【数据结构练习题】堆——top-k问题♥♥♥♥♥ 文章目录 1.只出过一次的数字1.1问题描述1.2思路分析1.3绘图分析1.4代码实现2.复制带随机指针的链表2.1问题描述2.2思路分析2.3绘图分析2.4代…

Android解放双手的利器之ViewBinding

文章目录 1. 背景2. ViewBinding是什么3. 开启ViewBinding功能4. 生成绑定类5. 使用ViewBinding5.1Activity 中使用5.2 Fragment 中使用5.3 ViewHolder 中使用 6. ViewBinding的优点7. 与 dataBinding 对比 1. 背景 写代码最繁琐的是什么&#xff1f;重复的机械操作。我们刚接…

【AI+老照片焕新】母亲节用AI把时间的印记变成暖心礼物

想念是一张泛黄的照片&#xff0c;藏在抽屉里的笑容&#xff0c;总是那么亲切。今天是母亲节&#xff0c;是不是想给妈妈来点不一样的惊喜&#xff1f;用AI技术&#xff0c;把那些老照片瞬间焕新&#xff0c;让妈妈的青春记忆重放光华&#xff01; 想象一下&#xff0c;妈妈年…

vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3

纯vue3的语法 一.创建&#xff08;基于vite&#xff09; 1.在指定目录下运行 npm create vuelatest 项目名称&#xff1a;英文小写下划线数字回车表示确定是、否 左右切换路由、pina、单元测试、端到端的测试、开启eslint控制代码质量 先选择no&#xff0c;学的时候自己手动…

4---自动化构建代码(逻辑梳理,轻松理解)

一、需求引出&#xff1a; 在使用编译器编译代码时&#xff0c;无论我们在一个项目中写了多少个文件(包括头文件、源文件)&#xff0c;我们都可以一键完成编译&#xff0c;编译器会自动处理各个文件之间的包含&#xff0c;调用关系。但是在Linux中&#xff0c;我们在一个目录下…

Docker in Docker(DinD)原理与实战

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker幻想曲&#xff1a;从零开始&#xff0c;征服容器宇宙》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Docker简介 2、Docker …

Kubernetes学习-深入Pod篇(一) 创建Pod,Pod配置文件详解

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Kubernetes渐进式学习-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 1.前言 我们在前面的文章讲解了Kubernetes的核心概念和服务部署&#x…