备案 控制台
学习
实践
活动
专区
工具
TVP
写文章

HTML5 简介(三):利用 History API 刷新 更改地址栏

HTML5 新增的历史记录 API 可以实现 刷新 更改地址栏链接,配合 AJAX 可以做到 刷新 跳转。 pushState 方法 上面的语句实际上用到了 HTML5 的历史记录 API。这套 API 提供一种「人为操纵」浏览器历史记录的方法。 浏览器历史记录可以看作一个「栈」。 执行pushState函数之后,会往浏览器的历史记录中添加一条新记录,同时 改变 地址栏的地址内容。它可以接收三个参数,按顺序分别为: 一个对象或者字符串,用于描述新记录的一些特性。 但是如果仅仅这样,地址栏是不会 改变 的,用户无法前进、后退,也无法收藏当前页面或者把当前页面分享给他人;搜索引擎抓取也有困难。这时,就可以使用 HTML5 的 History API 来解决这个问题。 最后,整个过程是不会 改变 页面标题的,可以通过直接对document.title赋值来更改页面标题。 URL 的限制 为了安全考虑,新 URL 必须和当前 URL 在同一个域名下。

884 1 0

《前端实战总结》如何在不 刷新 页面的情况下 改变 URL

page=2'; 这段代码虽然可以 改变 浏览器 url ,如下图所示: 但会出现一个性能问题,就是当我们执行了以上代码后,整个浏览器都会 刷新 ,导致我们不想 刷新 的部分也 刷新 了,那我们有办法可以让它局部 刷新 吗? HTML5 引入了 history.pushState() 和 history.replaceState() 方法,它们分别可以添加和修改历史记录条目。 使用 history.pushState() 可以 改变 referrer,它在用户发送 XMLHttpRequest 请求时在HTTP头部使用, 改变 state后创建的 XMLHttpRequest 对象的 referrer都会被 改变 。 ${stringify(queryObj)}` history.pushState({ url : url }, '', url ) 这样我们就可以在请求的同时,调用setBrowserUrl方法来 改变 浏览器

287 2 0
  • 广告
    关闭

    上云精选

    2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    React Router 使用 Url 传参后 改变 页面参数不 刷新 的解决方法

    问题 今天在写页面的时候发现一个问题,就是在 React Router 中使用了 Url 传参的功能,像这样: export class MainRouter extends React.Component /BrowserRouter> 按照官方文档的说法,可以在 ChannelPerPage 这个组件中使用 this.props.match.params 来获取 url 参数的值,但是我发现如果你在这个 url 下只将 url 中的参数部分 改变 ,比如 channelId 从 1 变成 2 的时候,页面并不会重新渲染。 查阅资料后发现这样的根本原因是 props 的 改变 并不会引起组件的重新渲染,只有 state 的变化才会引起组件的重新渲染,而 url 参数属于 props,故 改变 url 参数并不会引起组件的重新渲染 React的组件中有一个可复写的方法 componentWillReceiveProps(nextProps) { 这个方法可以在 React 组件中被复写,这个方法将会在 props 改变 的时候被调用

    765 3 0

    React Router核心依赖--history库

    在jQuery统治前端的年代,通过ajax请求 刷新 更新页面是当时相当流行的页面处理方式,SPA的雏形就是那时候演化出来的。 为了标示页面发生的变化,方便 刷新 后依然能显示正确的页面元素,一般会通过 改变 url 的hash值来唯一定位页面。但这会带来另一个问题:用户无法使用前进/后退来切换页面。 当页面的 url 或者hash发生变化的时候,浏览器会自动将新的 url push到history对象中。history对象内部会维护一个state数组,记录 url 的变化。 除了操作 url ,history对象还提供2个不用通过操作 url 也能更新内部state的方法,分别是pushState和replaceState。 以上是hash 改变 的时候被动更新相关的内容,下面再看下主动更新相关的代码,以push为例,replace大同小异。

    300 2 0

    从Vue-router到 html5 的pushState

    其次,我们也知道一般情况下, url 变更的时候,比如指定location.href、history.push、replace等,页面就会 刷新 。 那么问题来了,vue页面的页面跳转时怎么实现的? 没 刷新 页面么?没 刷新 页面,又要 改变 url ,加载新内容怎么做的? 'replace' : 'assign']( url ) 答案就是 html5 在history中新增加的方法:pushState和replaceState。这两个又是干啥的呢? 一条记录,更改页面 url ,但是不 刷新 页面,不 刷新 页面,不 刷新 页面。 vue-router就是利用pushState这个属性,在页面前进的时候动态 改变 history的内容,添加一条记录,接着location跟着 改变

    1.9K 5 0

    SPA应用路由器如何工作?

    改变 锚点时,页面的主体部分会切换内容,但是,整个页面不会被重新 刷新 。 那么,如何监听锚点变化? 1) 方法一:hashchange事件 hashchange事件遵从 HTML5 规范,它会在页面 URL 中的片段标识符(第一个#号开始到末尾的所有字符,包括#号)发生 改变 时触发。 HTML5 History API HTML5 包含新对象history,其提供对浏览器历史记录的访问能力。它暴露一些常用方法和属性,可以让用户通过操作浏览器“前进”和“后退”按钮,访问到历史记录。 整体页面,并没有 刷新 ,没有激活window.onload事件; 如此可见,利用 HTML5 history API,可以实现“切换 URL 地址但页面不会被 刷新 ”的功能。 它的优点是,路由器在多个 URL 间跳转,可以完全支持浏览器SEO(切换Hash不能 改变 真正的 URL ,多次路由切换后,搜索引擎爬虫会认为一直访问同一个页面,无法SEO)。

    184 4 0

    几种方法实现ajax请求内容时使用浏览器后退和前进功能

    我们可以利用ajax进行 刷新 改变 文档内容,但是没办法去修改 URL ,即无法实现浏览器的前进与后退、书签的收藏功能。 go([delta]):delta是个数字,如果不写或为0,则 刷新 本页;如果为正数,则前进到相应数目的页面;若为负数,则后退到相应数目的页面。 在 HTML5 中,新增了两个方法和一个事件: pushState history.pushState(stateObject, title, url ),包括三个参数。 第三个参数则是设定的 url 。一般设置为相对路径,如果设置为绝对路径时需要保证同源。 pushState函数向浏览器的历史堆栈压入一个 url 为设定值的记录,并 改变 历史堆栈的当前指针至栈顶。 在不 改变 document的前提下,一旦当前指针 改变 则会触发onpopstate事件。

    642 2 0

    HTML5 学习-day02【悟空教程】

    访问历史 API 在此之前我们可以通过history对象实现前进、后退和 刷新 之类的操作H5中开放了更多的API:历史状态操作 HTML5 history API包括:history.pushState() 而如果使用Ajax,不仅节省了浏览器需要下载的资源,而且 刷新 切换明显比页面跳转更平滑、流畅。就视频下面的评论来说,Ajax可以说是必须的。视频这样的重量级元素,动不动给你重新加载一次,不能忍。 每一页就这样通过地址栏的 URL 做了标记,每一次请求,浏览器都会根据参数返回正确的页码。所以,传统的跳转翻页, 刷新 也不会丢失状态。 另外,从 URL 的同源策略可以看出, HTML5 history API的出发点是很明确的,就是让 跳转的单站点也可以将它的各个状态保存为浏览器的多条历史记录。 默认空字符串oldValue返回发生 改变 的数据项的旧值 默认nullnewValue返回发生 改变 的数据项的新值 默认nullurl返回发生 改变 的数据的页面所对应的 url 默认空字符串storageArea

    455 3 0

    javascript基础修炼(6)——前端路由的基本原理

    1.HashChange 1.1 原理 HTML页面中通过锚点定位原理可进行 刷新 跳转,触发后 url 地址中会多出# + 'XXX'的部分,同时在全局的window对象上触发hashChange事件,这样在页面锚点哈希 改变 为某个预设值的时候 常用的方法包括: history.forward(); //在历史记录中前进一步 history.back(); //在历史记录中后退一步 history.go(n): //在历史记录中跳转n步骤,n=0为 刷新 本页 在 HTML5 中,window.history对象得到了扩展,新增的API包括: history.pushState(data[,title][, url ]);//向历史记录中追加一条记录 history.replaceState 3.hash 和 history API对比 对比 hash路由 History API 路由 url 字符串 丑 正常 命名限制 通常只能在同一个document下进行 改变 url 地址可以自己来定义,只要是同一个域名下都可以 ,自由度更大 url 地址变更 会 改变 可以 改变 ,也可以不 改变 状态保存 内置方法,需要另行保存页面的状态信息 将页面信息压入历史栈时可以附带自定义的信息 参数传递能力 受到 url 总长度的限制, 将页面信息压入历史栈时可以附带自定义的信息

    605 3 0

    单页面应用history路由实现原理

    HTML5 的history内置对象,然后进行了一些封装操作。 它暴露了很多有用的方法和属性,允许你在用户浏览历史中向前和向后跳转,同时——从 HTML5 开始——提供了对history栈中内容的操作。 history对象提供的API 可以实现 刷新 更改地址栏链接,配合 AJAX 可以做到 刷新 跳转,所以通过history进行路由变化是不会向服务器进行请求的 向前向后跳转 这两个api很简单,只是一条语句就好 跳转到指定的页面 HTML5 引入了 history.pushState() 和 history.replaceState() 方法,这两个方法都可以跳转到指定的 url 页面,主要区别在于replaceState 如果当前活动的历史记录项是被 pushState 创建的,或者是由 replaceState 改变 的,那么 popstate 事件的状态属性 state 会包含一个当前历史记录状态对象的拷贝 window.onpopstate

    2.3K 1 0

    移动端及时调试工具 - weinre使用方法

    此时注意一点,在Targets当中,并没有任何的内容,只有一个none( )。 2.3 在PC端进行访问 在浏览器 url 地址栏当中,输入文件路径~小编这里采用的是http://192.168.2.202:8081/www/h5course 刷新 刚刚的那个weinre页面看看吧~ 方法1:直接扫码,然后用浏览器打开 方法2:在你的手机浏览器中输入刚刚的 url 地址~ 在输入之后,我们的调试页面中的targets就变了模样喽~! 之后,在Elements中调试,尝试用PC端 改变 一下结构样式,试试吧~ JS的基本调试 PS:变化是同步的哦,无需 刷新 手机页面~~~ 好啦,接下来,你就可以尽情“调试”啦~~!!! 欢迎沟通交流~ HTML5 学堂 小编录制的小视频(将就下哈,下次我会录制的更好) 视频内容

    740 3 0

    从后端到前端之Vue(五)小试路由

    HTML5 History API提供了一种功能,能让开发人员在不 刷新 整个页面的情况下修改站点的 URL 。 我们可以用 history.pushState(null, null, ‘about’); 来 改变 url 地址,这种方式只是单纯的修改地址里的 url ,而不会向服务器提交,这样页面就不会被 刷新 ,我们才有机会执行 然后呢,页面当然是不会有啥变化的,因为vue是数据驱动,我们的数据 改变 了吗?并没有,我们只是 改变 了一下 url 。 这个vue似乎没有对rul做监听,或者是我还不知道怎么让vue去监听 url 的变化,总之我们先自己 改变 数据,然后再去研究vue有没有办法去监听 url 。 按F5会 刷新 页面,如果这时候 url 地址栏是 “/about” ,那么就会向服务器提交这个网址,很显然会出现服务器的404页面。因为服务器网站里面并没有这个地址。那么怎么办呢?

    303 2 0

    浅谈移动端页面无 刷新 跳转问题的解决方案

    得益于ajax,我们可以实现 跳转 刷新 ,又多亏了浏览器的histroy机制,我们用hash的变化从而可以实现推动界面变化。 1. 刷新 界面,给用户体验原生的应用感觉,最大的优势是使用过程的流畅。 2.节省原生(android和ios)app开发成本 3.提高发布效率,无需每次安装更新包。 所以,简而言之可以这样理解: 改变 #后面的值不触发网页重载,但会记录到浏览器history中去。 原理:修改hash的方式实现历史记录(浏览器对hash的修改会记录历史记录) 遵循一种原则,界面无 刷新 。 window.history.pushState:方法:为histroy建立历史记录,该方法传入三个函数 1、对应 url 的信息 2、下一个界面的title 3 、需要你动态 改变 的地址栏中的 url . 通过 HTML5 History API,实现页面跳转,实现简单的单页面web应用。

    1.9K 4 0

    前端路由简介以及vue-router实现原理

    单页应用不仅仅是在页面交互是 刷新 的,连页面跳转都是 刷新 的,为了实现单页应用,所以就有了前端路由。 类似于服务端路由,前端路由实现起来其实也很简单,就是匹配不同的 url 路径,进行解析,然后动态的渲染出区域 html 内容。但是这样存在一个问题,就是 url 每次变化的时候,都会造成页面的 刷新 。 那解决问题的思路便是在 改变 url 的情况下,保证页面的不 刷新 。 多了两个 API,pushState 和 replaceState,通过这两个 API 可以 改变 url 地址且不会发送请求。同时还有popstate 事件。 用了 HTML5 的实现,单页路由的 url 就不会多出一个#,变得更加美观。但因为没有 # 号,所以当用户 刷新 页面之类的操作时,浏览器还是会给服务器发送请求。

    1.1K 6 0