前端路由
2018-06-24 01:26:25来源:未知 阅读 ()
前端路由的两种实现方式:
1. location.hash + hashchange
function Router(){ this.curUrl = ''; this.routes = {}; } Router.prototype = { route(path, callback){ this.routes[path] = callback || function(){} }, refresh(){ this.curUrl = location.hash.slice(1) || ''; this.routes[this.curUrl](); }, init(){ window.addEventListener('load', this.refresh.bind(this), false); window.addEventListener('hashchange', this.refresh.bind(this), false); } } // 实例 var r = new Router(); r.init(); function changecolor(color){ var body = document.getElementsByTagName('body')[0]; body.style['background'] = color; } r.route('/',changecolor.bind(null,'#aaa'));
2. history API
pushState(state, title, url)添加记录,replaceState修改记录,popState(只有在前进后退时触发)
(function(){ var a = document.getElementById('a'); var b = document.getElementById('b'); var c1 = 0; var c2 = 0; history.replaceState({c1:c1,c2:c2},null,''); a.addEventListener('click',function(){ c1++; history.pushState({c1:c1,c2:c2},null,'#/a'+c1); a.innerHTML = 'a'+c1; }) b.addEventListener('click',function(){ c2++; history.pushState({c1:c1,c2:c2},null,'#/b'+c2); b.innerHTML = 'b'+c2; }) window.addEventListener('popstate',function(e){ console.log(e.state); a.innerHTML = 'a'+e.state.c1; b.innerHTML = 'b'+e.state.c2; }) }())
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- js调用刷新界面的几种方式 2020-03-05
- 高性能JavaScript循环语句和条件语句 2020-02-21
- vue路由跳转时判断用户是否登录功能的实现 2020-01-17
- Javascript实现前端简单的路由实例 2019-12-17
- 带你了解JavaScript 2019-10-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash