位置: IT常识 - 正文

Window.location用法(windowlocation用法)

编辑:rootadmin
Window.location用法 Window.location 详细介绍

推荐整理分享Window.location用法(windowlocation用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:window.location与location.href,window.location与location.href,windowlocation用法,window.location与location.href,windows. location,windows. location,windows. location,windowlocation用法,内容如对您有帮助,希望把文章链接给更多的朋友!

本文翻译自 @samanthaming 发表于 dev.to 的博文 原文地址 window.location Cheatsheet - DEV Community 👩‍💻👨‍💻

如果你需要获取网站的 URL 信息,那么 window.location 对象就是为你准备的。使用它提供的属性来获取当前页面地址的信息,或使用其方法进行某些页面的重定向或刷新。

https://www.samanthaming.com/tidbits/?filter=JS#2

window.location.origin → 'https://www.samanthaming.com' .protocol → 'https:' .host → 'www.samanthaming.com' .hostname → 'www.samanthaming.com' .port → '' .pathname → '/tidbits/' .search → '?filter=JS' .hash → '#2' .href → 'https://www.samanthaming.com/tidbits/?filter=JS#2'window.location.assign('url') .replace('url') .reload() .toString()window.location 属性window.location返回值.origin协议 + 主机名 + 端口号.protocol协议,例如(http: 或 https:).host域名 + 端口.hostname域名.port端口号.pathname首个 / 开始的路径名称.search?开始的参数字符串.hash#后跟随的锚点或是片段标识符href完整网址hostvs hostname

在上面的示例中,你会注意到 host 和 hostname 的返回值是一样的,那么为什么会定义两个属性名呢?这和端口号有关,让我们一起来看看。

没有端口号的 URL

https://www.samanthaming.com

window.location.host; // 'www.samanthaming.com'window.location.hostname; // 'www.samanthaming.com'window.location.port; // ''

带端口号的 URL

https://www.samanthaming.com:8080

window.location.host; // 'www.samanthaming.com:8080'window.location.hostname; // 'www.samanthaming.com'window.location.port; // '8080'

因此,host 将包含端口号,而 hostname 将只返回域名。

如何更改 URL 属性

你不仅可以调用 location 的属性来检索 URL 信息,还可以使用它来设置新的属性和更改 URL 。接下来让我们一起来看看。

// START 'www.samanthaming.com'window.location.pathname = '/tidbits'; // 设置 url 路径// RESULT 'www.samanthaming.com/tidbits'

以下是可以更改的属性的完整列表:

// Examplewindow.location.protocol = 'https' .host = 'localhost:8080' .hostname = 'localhost' .port = '8080' .pathname = 'path' .search = 'query string' // (不需要传入 ?) .hash = 'hash' // (不需要传入 #) .href = 'url'

唯一不能设置的属性是 window.location.origin 。

Location Object

window.location 返回一个 Location 对象。它提供有关页面当前 URL 的信息。但是你也可以通过几种不同的方法来访问 Location 对象。

window.location → Locationwindow.document.location → Locationdocument.location → Locationlocation → Location

我们之所以能够做到这一点,是因为这些都是我们浏览器中的全局变量。

window.location vs location

这四个属性都指向同一个 Location 对象。我个人更喜欢 window.location ,实际上会避免去使用 location。主要是因为 location 读起来更像一个通用术语,有些人可能会意外地将他们的变量命名为覆盖全局变量的变量。举个例子:

// https://www.samanthaming.comlocation.protocol; // 'https'function localFile() { const location = '/sam'; return location.protocol; // ❌ undefined // 因为局部变量 "location" 覆盖了全局变量}Window.location用法(windowlocation用法)

我想大多数开发人员都知道 window 是一个全局变量。所以你不太可能引起混乱。说实话,在我写这篇文章之前,我并不知道 location 是一个全局变量,因此,我的建议是更加明确的使用 window.location 。

以下是我的个人偏好顺序。

// ✅1. window.location // 🏆2. document.location// ❌1. window.document.location // 为什么不用 #1 或者 #2 😅2. location // 引起歧义的 😵

当然,这只是我的偏好。你是你自己代码库的专家,没有最好的方法,最好的方法永远是最适合你和你的团队的方法。

window.location 函数window.location.assign()跳转到给定的 URL.replace()跳转到给定的 URL,并且从历史记录中删除当前页面.reload()重新加载当前页面.toString()返回 URL 字符串window.location.toString

下面是 MDN 的定义:

This method returns the USVString of the URL. It is a read-only version of Location.href

换句话说,你可以这样使用它:

// https://www.samanthaming.comwindow.location.href; // https://www.samanthaming.comwindow.location.toString(); // https://www.samanthaming.com

至于使用哪一个,我找不到更多的资料来确认哪一个更好,如果你有更好的想法,欢迎提交一个关于这个的评论。但我确实找到了一个性能的差异。

JSPerf: Location toString vs Location href

关于这些速度测试,我想说明的一点是,它是特定于浏览器的。不同的浏览器和版本会呈现不同的结果。我正在使用 Chrome ,所以 href 比其他版本更快。所以我会使用 href,并且我认为它读起来比 toSting() 更清晰。很明显 href 将 提供 URL,而 toString() 看起来像是被转换成字符串的东西。

assign vs replace

这两种方法都可以帮助您重定向或导航到另一个 URL 。不同之处在于,assign 会将当前页面保存在历史记录中,因此用户可以使用“后退”按钮来导航到该页面。而用 replace 方法则不能保存它。糊涂了?没关系,我们来一起看个例子:

Assign

1. 打开一个新的空白页2. 访问 www.samanthaming.com (这是当前页面)3. 在控制台中输入以下代码,载入新页面 👉 `window.location.assign('https://www.w3schools.com')`4. 点击“后退”按钮5. 页面返回到 👉 www.samanthaming.com

Replace

1. 打开一个新的空白页2. 访问 www.samanthaming.com (这是当前页面)3. 在控制台中输入以下代码,载入新页面 👉 `window.location.replace('https://www.w3schools.com')`4. 点击“后退”按钮5. 页面返回到 👉 空白页

当前页面

我只需要在定义中强调“当前页面”。它是在你调用 assign 或 replace 之前的页面。

1. 打开一个新的空白页2. 访问 www.developer.mozilla.org3. 访问 www.samanthaming.com 👈 这个就是当前页面如何进行网页重定向

现在你已经知道,我们可以通过使用 = 直接赋值来更改 window.location 的属性。类似地,我们可以访问一些方法来执行某些操作。所以关于如何重定向到另一个页面,有三种方法:

// 直接给 href 属性赋值window.location.href = 'https://www.samanthaming.com';// 使用 Assignwindow.location.assign('https://www.samanthaming.com');// 使用 Replacewindow.location.replace('https://www.samanthaming.com');replace vs assign vs href

这三个都是重定向的,区别在于浏览器的历史记录。href 和 assign 在这里是一样的。它会在历史记录中保存当前页面,而 replace 不会。所以如果你喜欢创建一个导航不能回到原始页面的体验,请使用 replace。

现在的问题是 assign vs href。我想这可能是个人喜好。我更喜欢 assign ,这让我感觉像是在执行一些动作。此外它还有一个额外的好处,就是更容易测试。我已经编写了很多的 Jest 测试用例,通过使用这个方法,它让 mock 变得更容易。

window.location.assign = jest.fn();myUrlUpdateFunction();expect(window.location.assign).toBeCalledWith('http://my.url');

但是对于 href,我发现了一个性能测试,并在我的 Chrome 版本中运行的更快更快。 同样,性能测试范围包括浏览器和不同版本,现在可能会更快,但是在未来的浏览器中,这些地方可能会被调换。

总结

好了,稍微转移一下话题,我们来看看这份使用说明是如何形成的。我在谷歌搜索如何重定向到另一个页面,然后遇到了 window.location 对象。有时候我觉得开发人员就像一个记者或者是侦探——需要通过大量的挖掘和梳理多个来源来收集所有的可用信息。老实说,我被外面的材料弄得不知所措,他们都覆盖了不同的部分,但是我只想要一个单一来源。我找不到太多,所以我想我把他们都写到一张小小的总结里!

本文链接地址:https://www.jiuchutong.com/zhishi/299631.html 转载请保留说明!

上一篇:【C#+JavaScript+SQL Server】实现Web端考试系统 六:后台管理模块设计(附源码和资源)

下一篇:WebSocket开发(心跳监测)功能(websocket())

  • 吐血分享7年网赚经验(七年了吧)

    吐血分享7年网赚经验(七年了吧)

  • 苹果13promax怎么关闭横屏(苹果13promax怎么关机)

    苹果13promax怎么关闭横屏(苹果13promax怎么关机)

  • 淘宝助理怎么批量发布宝贝(淘宝助理怎么批量删除)

    淘宝助理怎么批量发布宝贝(淘宝助理怎么批量删除)

  • 人脸识别是看眼睛瞳孔吗(人脸识别是看眼还是看脸)

    人脸识别是看眼睛瞳孔吗(人脸识别是看眼还是看脸)

  • 4g降速后有多慢(4g降速后有多慢的速度)

    4g降速后有多慢(4g降速后有多慢的速度)

  • 手机为什么没法设来电转接(手机为什么没法超级快充了)

    手机为什么没法设来电转接(手机为什么没法超级快充了)

  • opporeno黑屏按啥都不好使(opporeno手机黑屏)

    opporeno黑屏按啥都不好使(opporeno手机黑屏)

  • 闲鱼怎么发布同城闲置(闲鱼怎么发布同城服务)

    闲鱼怎么发布同城闲置(闲鱼怎么发布同城服务)

  • OTG数据线有什么用

    OTG数据线有什么用

  • 没有原彩显示的一定不是原装吗(没有原彩显示的苹果)

    没有原彩显示的一定不是原装吗(没有原彩显示的苹果)

  • 华为mate10设置自动开关机(华为mate10设置自动接听)

    华为mate10设置自动开关机(华为mate10设置自动接听)

  • 网易云最近播放在哪(网易云最近播放是实时的吗)

    网易云最近播放在哪(网易云最近播放是实时的吗)

  • 微信被对方拉黑了还有什么方式可以知道(微信被对方拉黑是什么显示)

    微信被对方拉黑了还有什么方式可以知道(微信被对方拉黑是什么显示)

  • 如何判断干电池有没有电(如何判断干电池电量)

    如何判断干电池有没有电(如何判断干电池电量)

  • 9800gt相当于什么显卡(9800gt相当于什么n卡)

    9800gt相当于什么显卡(9800gt相当于什么n卡)

  • hd显卡和gtx显卡区别

    hd显卡和gtx显卡区别

  • 京东京豆能送人吗(京豆可以转赠吗)

    京东京豆能送人吗(京豆可以转赠吗)

  • 抖音撤回消息还能看见吗(抖音撤回消息还看得到吗)

    抖音撤回消息还能看见吗(抖音撤回消息还看得到吗)

  • 关闭原彩显示会省电吗(关闭原彩显示会怎么样)

    关闭原彩显示会省电吗(关闭原彩显示会怎么样)

  • 网调是什么(网调是什么意思网络)

    网调是什么(网调是什么意思网络)

  • 如果取消支付宝刷脸(如果取消支付宝的免密支付)

    如果取消支付宝刷脸(如果取消支付宝的免密支付)

  • 伪基站是什么意思

    伪基站是什么意思

  • 苹果手机查找朋友位置不可用是什么情况(苹果手机查找朋友在哪里)

    苹果手机查找朋友位置不可用是什么情况(苹果手机查找朋友在哪里)

  • 水滴筹证明怎么删除(水滴筹钱证明真实怎么写)

    水滴筹证明怎么删除(水滴筹钱证明真实怎么写)

  • 华为nova5i充电功率(华为nova5z充电)

    华为nova5i充电功率(华为nova5z充电)

  • 分屏模式在哪里设置(分屏模式在哪里打开)

    分屏模式在哪里设置(分屏模式在哪里打开)

  • 华为悦盒怎么用(华为悦盒怎么用手机遥控器)

    华为悦盒怎么用(华为悦盒怎么用手机遥控器)

  • windows.old删了的后果(删掉windows.old还能恢复出厂设置吗)

    windows.old删了的后果(删掉windows.old还能恢复出厂设置吗)

  • 新版Edge浏览器开启“自动沉浸式阅读器”功能(新版edge浏览器如何恢复设置)

    新版Edge浏览器开启“自动沉浸式阅读器”功能(新版edge浏览器如何恢复设置)

  • 15000 字的 SQL 语句大全 第一部分(sql1000*1.0)

    15000 字的 SQL 语句大全 第一部分(sql1000*1.0)

  • 不含税价格计算方法
  • 预提费用在资产负债表哪个科目
  • 金税盘开具发票 在增值税申报表哪填写
  • 基本医疗保险基金与生育保险基金
  • 税务变更需要哪些材料
  • 未确认融资租赁费用是什么类型科目
  • 以资抵债是利空还是利好
  • 现金流量表本月数和本年累计数不一致
  • 押金满一年才能退
  • 小规模纳税人开专票和普票的区别
  • 工资未发放是否可以仲裁
  • 财税〔2017〕39号商业健康保险个人所得税
  • 怎样算纳税人
  • 预付账款讲解
  • 哪些记账凭证
  • 收到委托代销清单的会计分录
  • windows10不会自动锁屏
  • 王者荣耀中如何隐藏贵族标志
  • 现金流量表的计算公式原理
  • 用代管资金付出的钱
  • 国外交工作的基本出发点和落脚点是
  • 苹果电脑itu
  • 材料没有入库
  • 如何解决Windows10电脑卡顿现象
  • 建筑业成本核算表格百度网盘
  • 拓展销售市场发生的业务招待费计入
  • 金融公司呆账对当事人有什么影响
  • 不能抵扣的发票可以做成本吗
  • 金融企业贷款损失准备金计提比例
  • Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
  • 项目版本管理是什么
  • 新能源企业所得税税率是多少
  • Yii2中hasOne、hasMany及多对多关联查询的用法详解
  • pytorch example
  • pytorch训练函数
  • 退质保金计入什么科目
  • 帐没做完怎么报增值税
  • 免税票如何做会计分录
  • 独资设立的有限公司
  • 哪些人不要申报个税
  • mysql事务引擎
  • 商业承兑汇票退回给上手公司怎么操作
  • ubuntu下编译安装opencv
  • 去年的财务报表网上更正申报
  • 增值税发票查询全国统一发票查询平台
  • 简易计税方法的适用范围
  • 防洪费需要计提吗
  • 出口货物用途
  • 小规模纳税人购进商品会计分录
  • 现金流量少
  • 融资租赁的服务费是什么票
  • 网络管理费用
  • 利息收入和应收利息
  • 什么是一般生产要素
  • 在建工程进项税额抵扣规定
  • 外购入库暂估补差单
  • 明细分类账怎么做表格
  • 商业企业采购商品会计分录
  • ado connection open.vi
  • 一次性关闭所有窗口的快捷键
  • CentOS中httpd源代码安装与测试步骤分享
  • vc++6.0运行程序
  • 新款apple macbook air
  • windows10 14393版本
  • win10自动更新win11怎么办
  • Android OpenGL ES(一)----必备知识
  • opengl粒子系统烟花
  • 从零基础开始学
  • nodejs实战教程
  • jquery java
  • json数据格式的理解
  • 怎么设置python前面序号
  • javascript闭包运行原理
  • 税务局投诉怎么投诉
  • 各国海关关税起征点
  • 兼营增值税应税项目和免税项目
  • 用电稽查工作总结
  • 宁夏回族自治区房产税
  • 总公司与分公司签订承包协议
  • 山东省工会经费收支管理办法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设