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

建一个域名网站要多少钱网络推广公司简介模板

建一个域名网站要多少钱,网络推广公司简介模板,html网页的代码大全,重庆酉阳网站设计公司1. 前言 在之前整理BOM的五个对象时,提到: location.hash发生改变后,会触发hashchange事件,且history栈中会增加一条记录,但页面不会重新加载——实现HashRouter的关键history.pushState(state, , URL)执行后&#xf…
1. 前言

        在之前整理BOM的五个对象时,提到:

  • location.hash发生改变后,会触发hashchange事件,且history栈中会增加一条记录,但页面不会重新加载——实现HashRouter的关键
  • history.pushState(state, '', URL)执行后,history栈中会增加一条记录,但页面不会重新加载,回退(history.back()或history.go(-1))会触发popstate事件,location.pathname发生改变——实现BrowserRouter的关键

        本篇通过举例方式详细描述实现的过程。

2. HashRouter的原理
2.1 原理要点
  • 通过<a>元素href属性修改URL的hash值(或location.hash='#/xxx'修改,或前进后退修改);
  • location.hash发生改变,页面不会重新加载;
  • location.hash发生改变,URL也会改变(hash是URL的一部分),新URL被推入history栈中;
  • location.hash发生改变,会触发window的hashchange事件;
  • 通过给window.onhashchange绑定事件处理函数,监听hash变化,根据hash值选择渲染的组件。

注:根据hash值变化渲染组件,不会影响hash原有作为锚点的功能(锚点功能:根据#后面字符串滚动到对应id的元素 )

2.2 示例源码
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Hash Router</title></head><body><a href="#/user">Go user</a><a href="#/info">Go info</a><div id="root"></div><!-- <div style="height: 600px;"></div><div id="/info"></div> --><script>let root = document.getElementById('root');window.onhashchange = function(event) {if(window.location.hash === '#/user') {root.innerHTML = `<label>用户名:<input value="小明" placeholder="user name"/></label>`;} else {root.innerHTML = `<label>年龄:13岁</label>`;}}</script></body>
</html>
3. BrowserRouter的原理
3.1 原理要点
  • window不支持onpushstate事件,需要为window构造onpushstate事件,并绑定事件处理函数,重写history.pushState,保证执行history.pushState就会触发onpushstate事件;
  • 可以为菜单项绑定click事件处理函数,执行重写的history.pushState(state,title,url)修改URL;
  • 执行重写的history.pushState,页面不会重新加载,但location.pathname发生改变,并触发window的onpushstate事件;
  • 通过window.onpushstate的事件处理函数,监听pathname变化,根据pathname值选择渲染的组件;
  • 前进和后退会改变URL,页面不会重新加载,location.pathname发生改变,并触发window的onpopstate事件;
  • 通过window.onpopstate绑定的事件处理函数,监听pathname变化,根据pathname值选择渲染的组件。
3.2 示例源码
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Hash Router</title></head><body><div id="root"></div><script>let root = document.getElementById('root');window.onpushstate = function(state, title, url) {console.dir({type: 'onpushstate', state, pathname: url});render(url);}// 修改history.pushState方法,将window.onpushstate事件绑入bindPushstate(window.history);function bindPushstate(history) {let pushState = history.pushState;history.pushState = function(state, title, url) {if(typeof window.onpushstate === 'function') {window.onpushstate(state, title, url);}return pushState.apply(history, arguments);}}            window.onpopstate = function(event) {const pathname = window.location.pathname;console.dir({type: event.type, state: event.state,pathname});render(pathname);}function render(pathname) {if(pathname === '/user') {root.innerHTML = `<label>用户名:<input value="小明" placeholder="user name"/></label>`;} else if(pathname === '/info') {root.innerHTML = `<label>年龄:13岁</label>`;} else {root.innerHTML = `<label>需要填写个人信息</label>`;}}setTimeout(() => {window.history.pushState({ page: 1 }, 'user', '/user');}, 2000);setTimeout(() => {window.history.pushState({ page: 2 }, 'info', '/info');}, 4000);setTimeout(() => {window.history.pushState({ page: 3 }, 'help', '/help');}, 6000);</script></body>
</html>
4. 总结

        再牛的建筑都离不开一块一块砖瓦,学到很多高大上的框架和上层API时,再回过头来看基础,会更加深对框架和上层API的理解。

注:以上,如有不合理之处,还请帮忙指出,大家一起交流学习~  

http://www.yayakq.cn/news/561337/

相关文章:

  • 卖房网站母亲节做什麽活动四川建设人力资源网官网
  • 公司为什么要做网站网站 欣赏
  • 昆明做网站建设企业推荐网页设计与制作黑马程序员
  • 在手机上自建网站怎么弄想开一家网店
  • 温州市营销网站建设wordpress 插件 安装
  • 外包做网站多少钱游戏加盟网
  • 好看的网站链接中国建筑集团有限公司官网测评网址
  • 珠海网站制作哪家便宜免费个人网站源码
  • 需要做网站的公司有哪些专门做汽车配件的网站
  • 郴州网站定制开发板的作用
  • 建设网站北京市网站开发工作怎么样
  • 金融网站的设计建网站做cpa
  • 网站域名怎么起h5链接怎么做
  • 网站建设的小说关键词优化排名有哪些牛霸天的软件1
  • 在哪网站可以做农信社模拟试卷建设旅游网站的意义
  • 随州网站建设全包提高图片网站访问速度
  • 网站做支付要多少钱珠海手机网站建设公司
  • 有网站建设费科目吗摄影网站做画册
  • 如何做一个免费的网站提供免费建网站的网
  • 网站建设推广代理商东莞最好的网站建设价格
  • 网站平台建设的重要性创建微网站
  • 我局 负责 建设 网站守游网络游戏推广平台
  • 企业网站的建设的功能定位建设网站工作报告
  • 网站建设ktv重庆网站改版
  • 深圳科技有限公司 网站建设自己开发小程序要多少钱
  • 深圳市建设工程资料网站服装营销方式和手段
  • 成立网站开发公司珠海模板网站建设公司
  • 做期货网站nike定制在哪个app
  • wordpress全站cdn ssl网站架构设计师是做什么的
  • 做网站哪个好开跨境电商的店需要多少钱