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

hash、hashchange事件

1、hash即URL中"#"字符后面的部分。

  ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置;

  ②hash还有另一个特点,它的改变不会导致页面重新加载;

  ③hash值浏览器是不会随请求发送到服务器端的;

  ④通过window.location.hash属性获取和设置hash值。

 

  window.location.hash值的变化会直接反应到浏览器地址栏(#后面的部分会发生变化),同时,浏览器地址栏hash值的变化也会触发window.location.hash值的变化,从而触发onhashchange事件。

 

2、hashchange事件(IE8已支持该事件)

  ①当URL的片段标识符更改时,将触发hashchange事件(跟在#符号后面的URL部分,包括#符号)

  ②hashchange事件触发时,事件对象会有hash改变前的URL(oldURL)和hash改变后的URL(newURL)两个属性:

  

window.addEventListener('hashchange',function(e) { console.log(e.oldURL);  console.log(e.newURL) },false);

 

 

3、示例

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>history 测试</title> 
</head> 
<body> 

<p><input type="text" value="0" id="oTxt" /></p> 
<p><input type="button" value="+" id="oBtn" /></p> 

<script> 
var otxt = document.getElementById("oTxt"); 
var oBtn = document.getElementById("oBtn"); 
var n = 0; 

oBtn.addEventListener("click",function(){ 
n++; 
add(); 
},false); 
get(); 

function add(){ 
if("onhashchange" in window){ //如果浏览器的原生支持该事件
window.location.hash = "#"+n; 
} 
} 

function get(){ 
if("onhashchange" in window){ //如果浏览器的原生支持该事件
window.addEventListener("hashchange",function(e){ 
var hashVal = window.location.hash.substring(1); 
if(hashVal){ 
n = hashVal; 
otxt.value = n; 
} 
},false); 
} 
} 
</script> 
</body> 
</html>

原文地址:https://www.cnblogs.com/carriezhao/p/6861319.html

转载于:https://www.cnblogs.com/zyl-Tara/p/9046043.html

相关文章:

  • 解决问题的前提——放空自己
  • 并发之AtomicInteger
  • CentOS6.5使用createrepo搭建本地源
  • Docker系列教程21-Docker Compose快速入门
  • centOS下NFS服务器的安装配置详解
  • IDEA下从零开始搭建SpringBoot工程
  • SQL SERVER时间格式化
  • top命令的使用
  • 手机WAP前端开发标准
  • 微信钱包入口开发笔记
  • 编程是一个没有前途的工作
  • 32位系统(软件)和64位系统(软件)的区别(跑的快,内存支持多)
  • SQL点滴34—SQL中的大小写
  • Windows 10下安装配置Caffe并支持GPU加速(修改版)
  • mac homebrew安装
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【RocksDB】TransactionDB源码分析
  • 2017-09-12 前端日报
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Hexo+码云+git快速搭建免费的静态Blog
  • JAVA_NIO系列——Channel和Buffer详解
  • js如何打印object对象
  • MobX
  • Python学习之路13-记分
  • React系列之 Redux 架构模式
  • 服务器之间,相同帐号,实现免密钥登录
  • 诡异!React stopPropagation失灵
  • 计算机常识 - 收藏集 - 掘金
  • 盘点那些不知名却常用的 Git 操作
  • 深度学习中的信息论知识详解
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 数组的操作
  • 想写好前端,先练好内功
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 函数计算新功能-----支持C#函数
  • ​2020 年大前端技术趋势解读
  • !!java web学习笔记(一到五)
  • #{}和${}的区别是什么 -- java面试
  • #pragma 指令
  • #控制台大学课堂点名问题_课堂随机点名
  • (4)(4.6) Triducer
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (一) storm的集群安装与配置
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)创业的注意事项
  • .apk 成为历史!
  • .NET C#版本和.NET版本以及VS版本的对应关系