continue语句用于终止本次循环,继续执行下一次循环,语法格式如下:语法格式说明:◇ continue有两种使用形式,默认不加标签名,结束紧邻的循环语句。◇ continue跟随标签名,表示终止本次循环之后跳转的位置。图6.4.3continue语句终止本次循环上例使用continue语句跳过奇数。提示continue跳出外层循环会使代码的可读性变得很差,一般情况下不建议使用。......
2025-09-30
不论是使用location跳转新的网址,还是使用history跳转,都会导致浏览器刷新网页,重新请求大部分重复的CSS、JS等文件。使用location.hash修改网址的hash部分,不会导致网页刷新,但网址并不美观,而且会影响SEO,让搜索引擎误判两个不同hash的网页为同一个网页。
history提供了pushState()函数。通过pushState()修改网址时,浏览器不会刷新网页,所有CSS、JS以及图片资源都还存在,此时使用JavaScript控制页面切换,可以实现无感知刷新网页。该函数接收三个参数,语法如下:
参数说明:
◇ history:表示历史对象。
◇ data:表示该状态对应的数据对象;state的含义是状态,pushState就像数组一样将这个state放到数组列表中,当触发popstate事件时,浏览器将这个data对象从数组中取出,传递给popstate事件。
◇ title:表示网页标题,但是目前所有浏览器都会忽略该参数,不论设置什么值都没有效果,因此在使用history.pushState()函数时要配合修改document.title属性才能修改网页标题,也可以通过修改<title>标签来修改网页标题。
◇ newUrl:表示调用history.pushState()之后网址栏显示的新网址。
在执行过history.pushState()函数的页面,当用户点击后退或前进时,会触发window对象的onpopstate事件。在网页中监听onpopstate事件,接收state变化通知,从而进行网址切换。这种切换不会导致网页刷新,对用户更友好。
13.4.2.html使用pushState()方法修改网址,如下所示。
动手写13.4.2(https://www.chuimin.cn)
执行13.4.2.html,注意网址变化时网页不会刷新,如下图所示。
图13.4.2 使用history.pushState()刷新网页
history.pushState()需要配合window.onpopstate()事件一起使用,才能完全实现浏览器网页的前进、后退、刷新和跳转。
点击浏览器后退按钮,第一次触发popstate事件,因为之前没有对该网址设置stateData,所以此时event.state为null;接下来点击浏览器前进按钮,第二次触发popstate事件,此时event.state即为调用函数history.pushState()设置的stateData。
history.replaceState()与location.replace()类似,直接替换当前访问state,不会增加新的历史记录。
使用history.pushState()可以实现与location.assign()一样的效果,且完全不需要二次加载整个网页。
相关文章
continue语句用于终止本次循环,继续执行下一次循环,语法格式如下:语法格式说明:◇ continue有两种使用形式,默认不加标签名,结束紧邻的循环语句。◇ continue跟随标签名,表示终止本次循环之后跳转的位置。图6.4.3continue语句终止本次循环上例使用continue语句跳过奇数。提示continue跳出外层循环会使代码的可读性变得很差,一般情况下不建议使用。......
2025-09-30
读者应熟练掌握JavaScript的基本理念,确保自己既可以快速掌握使用JavaScript,也可以及时了解和使用JavaScript语言的新特性。......
2025-09-30