监听浏览器hash变化和html5 pullstate特性
来源:互联网 发布:万得股票mac版 编辑:程序博客网 时间:2024/05/19 15:43
最近在学vue,用到了路由,虽然之前用正美大神的avalon的时候也用到了路由,但是却没有现在这样迫切的想知道前端路由的实现原理,
触发浏览器地址管理机制的情况大致有三种:
1.a链接跳转
2.浏览器地址栏hash改变,可以直接通过js改变window.location.hash
3.使用HTML5特效 pullstate
第一个会导致当前窗口刷新,第二个和第三个不会导致刷新
使用2和3的原因:
1.window.location的其他属性的修改并不能监听
2.单页面不需要刷新
3.可以通过监听对应的事件获取上一页的地址
兼容性:
hash兼容IE8[IE7文档模型下不支持],参考文档:
http://www.runoob.com/jsref/prop-doc-documentmode.html
http://www.86y.org/art_detail.aspx?id=781
修改和监听hash变化---代码如下:
<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> window.onload = function() { var oInput2 = document.getElementById('input1'); var oDiv2 = document.getElementById('div1'); oInput2.onclick = function() { //var arr = randomNum(35,7); var b = '恶搞'; window.location.hash = "#100"; }; if ("onhashchange" in window) { window.onhashchange = function(ev) { alert("b") console.log(ev) oDiv2.innerHTML = window.location.hash; }; } }; </script></head><body> <input type="button" value="通过pushstate改变" id="input1"> <div id="div1"></div></body></html>
通过html特性触发浏览器历史队列---代码:
<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> window.onload = function() { var oInput2 = document.getElementById('input1'); var oDiv2 = document.getElementById('div1'); oInput2.onclick = function() { //var arr = randomNum(35,7); var b = '恶搞'; window.location.hash = "#100"; }; if ("onhashchange" in window) { window.onhashchange = function(ev) { alert("b") console.log(ev) oDiv2.innerHTML = window.location.hash; }; } }; </script></head><body> <input type="button" value="通过pushstate改变" id="input1"> <div id="div1"></div></body></html>
0 0
- 监听浏览器hash变化和html5 pullstate特性
- 监听后退事件和hash变化
- 浏览器窗口变化监听
- 监听地址栏hash值的变化
- jdk7 新特性 监听文件目录变化
- jdk7监听文件系统变化通知新特性
- jQuery监听浏览器窗口大小的变化
- jQuery监听浏览器窗口大小的变化
- HTML5标签和元素变化
- iOS11变化和新特性
- html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
- html5 新特性支持的浏览器检测
- html5 新特性支持的浏览器检测
- 浏览器对HTML5特性检测工具Modernizr
- html5 检测浏览器是否支持新特性
- 实时监听input输入的变化(兼容主流浏览器)
- angluarjs监听浏览器变化,使用directive获取dom元素属性
- 实时监听input输入的变化(兼容主流浏览器)
- maven-- web层中创建jsp时出错
- Mysql分析-show PROCESSLIST
- C++ 虚表(探索多态的原理)和菱形继承
- 这些违规落地页广告,你都知道吗?
- Jsp/Servlet及其相关技术详解复习总结
- 监听浏览器hash变化和html5 pullstate特性
- [LeetCode 27 Remove Element ]
- div垂直居中
- 关于java.util.NoSuchElementException的其中一种解决方案
- oracle回滚误操作导致数据丢失且已提交的数据
- (java)多个附件打包成压缩文件(*.ZIP)以及打包时常见的文件乱码和文件名乱码以及丢失文件或文件损坏问题解决办法
- Java使用IE打开网页和使用默认浏览器打开网页的3种方法
- 控制台程序异常:ERROR: JDWP…
- Android declare-styleable自定义控件属性