hash与history

简介: hash与history

hash是什么

hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分,一般有当前页面中href中#地址触发

  • hash的改变不会导致页面重新加载;
  • 使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置;
  • 通过window.location.hash属性获取和设置hash值

当hash值发生变化时会触发该事件,a标签的href为一个锚链接

当被点击时:浏览器地址栏会发生如下变化

file:///C:/Users/Administrator/Desktop/3.16/05/%E4%BB%A3%E7%A0%81/pra.html

=>

file:///C:/Users/Administrator/Desktop/3.16/05/%E4%BB%A3%E7%A0%81/pra.html#id

hashchange事件

(window.onhashchange)

onhashchange 事件在当前 URL 的锚部分(以 ‘#’ 号为开始) 发生改变时触发 。

window.addEventListener('hashchange', function(e) {
  console.log(e.oldURL) // 改变前的链接
  console.log(e.newURL) // 改变后的链接
})
window.location.href和window.location.hash和window.location.search

(1)window.location.href 得到的是完整的URL

url= “www.baidu.com”

比如:window.location.href = ’ www.baidu.com’

(2)window.location.hash 得到的是锚链接

url= “www.baidu.com#all”

比如:window.location.hash= ’ #all’

(3)window.location.search得到的是URL‘?’号后面的字符串部分

url= “www.baidu.com/?username=aaa&age=10”

比如:window.location.search= ’ ?username=aaa&age=10’

history

History.pushState()

该 **history.pushState()**方法向浏览器的会话历史堆栈添加一个条目。

语法:

pushState(state, unused)
pushState(state, unused, url)

参数:

state

state对象是一个 JavaScript 对象,它与由pushState(). 每当用户导航到 new时,都会触发state一个事件,并且该事件的属性包含历史条目 对象的副本。

state对象可以是任何可以序列化 的对象。因为 Firefox 将state对象可以是任何可以序列化 的对象。因为 Firefox 将state对象保存到用户的磁盘,以便在用户重新启动浏览器后可以恢复它们,所以我们对state对象的序列化表示施加了 16 MiB 的大小限制。如果将 state序列化表示大于此的对象传递给pushState(),则该方法将引发异常。如果您需要比这更多的空间,我们鼓励您使用localStorage.

unused

该参数因历史原因而存在,不能省略;传递空字符串对于将来对该方法的更改是安全的。

url

新历史条目的 URL 由该参数给出。请注意,在调用 之后,浏览器不会尝试加载此 URL pushState(),但它可能会在稍后尝试加载 URL,例如在用户重新启动浏览器之后。新的 URL 不需要是绝对的;如果是相对的,则相对于当前 URL 进行解析。新 URL 必须与当前 URL同源;否则,pushState()将抛出异常。如果未指定此参数,则将其设置为文档的当前 URL。

描述:

从某种意义上说,调用pushState()类似于设置window.location = "#foo",两者都将创建和激活与当前文档关联的另一个历史条目。但是pushState()有几个优点:

  • 新 URL 可以是与当前 URL 同源的任何 URL。相反,window.location只有当您只修改哈希时,设置才能让您保持在同一个文档中。
  • 如果您不想更改 URL,则不必更改。相反,设置window.location = "#foo";仅在当前哈希不是时创建一个新的历史条目#foo
  • 您可以将任意数据与新的历史记录条目相关联。使用基于散列的方法,您需要将所有相关数据编码为一个短字符串。

frame

frameset

划分的时候需要 去掉body标签

思路: 先横向划分(指定高度),在纵向划分(指定宽度)

链接的 target 属性

用法:

描述
_blank 在新窗口中打开被链接文档。
_self 默认。在相同的框架中打开被链接文档。
_parent 在父框架集中打开被链接文档。
_top 在整个窗口中打开被链接文档。
framename 在指定的框架中打开被链接文档。

注意:前四种是系统默认的,同时 _blank_self(默认)用的最多;

而第五种是在使用***frameset框架集***的时候才能用,而且必须给框架起名字

而且名字不能以下划线 _开头,否则会被浏览器忽略。


相关文章
|
机器学习/深度学习 人工智能 达摩院
阿里云开发者社区 x 达摩院 x计算平台事业部 大数据 + AI向量检索专场Meetup回顾(内含讲师PPT领取)
阿里云开发者社区 x 达摩院 x计算平台事业部 大数据 + AI向量检索专场。来自,阿里巴巴、爱奇艺、Zilliz、搜狐、Jina.AI等公司的九位重量级讲师在现场分享了他们前沿的向量检索技术思考与实践沉淀总结,快来领取讲师精彩ppt!
1872 0
阿里云开发者社区 x 达摩院 x计算平台事业部 大数据 + AI向量检索专场Meetup回顾(内含讲师PPT领取)
|
区块链 安全 存储
带你读《区块链工程实践 行业解决方案与关键技术》之二:电力市场交易结算智能合约
本书是一部能全方位指导区块链项目落地的实操性著作。通过5个经典的行业案例,从总体设计、业务设计、功能接口设计、架构设计这4个维度详细讲解了如何构建一个完整的区块链行业解决方案,同时讲解了实现每个解决方案需要的关键技术和方法。
|
4月前
|
JSON 文件存储 数据安全/隐私保护
微博超话自动签到神器, 微博自动签到神器app,贴吧微博签到脚本工具助手
核心模块包含超话列表获取和签到功能‌2使用配置文件存储cookies避免硬编码‌1
|
2月前
|
SQL 运维 关系型数据库
【产品升级】Dataphin V5.0版本发布:助力出海业务、增全量一体集成、异步调用API等更多功能等你发现
Dataphin是瓴羊推出的智能数据建设与治理平台,基于阿里巴巴内部实践,提供一站式数据建设与治理能力。V5.0版本研发新增支持Databricks作为离线计算引擎、支持MySQL数据库一键增全量同步、支持管理Hudi、Delta Lake表等;资产运营与消费持续提效,支持批量编辑目录名称及描述、Quick BI仪表板的上架管理等功能,增加资产可用性与盘点效率。
223 8
|
Windows Linux
dietpi远程桌面与中文汉化教程
今天教大家dietpi系统汉化教程,当然如果你刷的不是dietpi也可以参照教程思路进行汉化.比如:armbian 固件下载链接:dietpi下载armbian下载如果你已经刷好固件了那么就开始吧! 1.
4219 0
|
域名解析 安全 应用服务中间件
开发小技巧之Nginx配置二级域名
我们平常可以使用端口号来区分不同的服务,但是我们访问网站的时候几乎没见过使用域名加端口号的情况,那是因为可以使用二级域名代替。
1940 1
开发小技巧之Nginx配置二级域名
|
传感器 人工智能 城市大脑
阿里云AI | 畜牧养殖业综合解决方案
本文介绍了阿里云AI | 畜牧养殖业综合解决方案的方案概述以及业务价值。
阿里云AI | 畜牧养殖业综合解决方案
|
存储 SQL 分布式计算
12306.cn 使用 Gemfire 技术为查询提速
12306.cn是世界规模最大的实时交易系统之一,媲美Amazon.com,节假日尤其是春节的访问高峰,网站压力巨大。2012年初的春运高峰期间,每天有2000万人访问该网站,日点击量最高达到14亿在春运高峰,经常崩溃,无法登录,怨声载道。
729 0
12306.cn 使用 Gemfire 技术为查询提速

热门文章

最新文章