Skip to content

Files

Latest commit

 

History

History
46 lines (39 loc) · 2.8 KB

7.1.6.md

File metadata and controls

46 lines (39 loc) · 2.8 KB

7.1.6 使JavaScript的操作留在浏览器的历史记录中 -pushState方法- IE9

  使用JavaScript更新页面时,不能保持页面原来的状态。例如点击按钮,使用JavaScript更新页面之后,想要回到点击前的状态,点击[后退]按钮会怎么样?结果是没有得到预期的动作,直接回到上一个页面了。 image

以前的[后退]按钮
只能以页面为单位后退(忽略JavaScript的操作)
链接页面before.html
页面迁移
当前页面current.html
JavaScript操作
当前页面current.html(操作之后)
如果使用History API
可以返回到JavaScript操作之前的状态

●JavaScript应用中[后退]按钮的动作

【365页】

  因此,可以使用pushState方法(也可以称为History API)。使用pushState方法可以将JavaScript中任意的时间点添加到浏览器的历史记录中。
  首先,我们使用示例来看下具体的动作吧。这是个点击[结算]按钮就会添加浏览器历史记录的例子。每次点击[结算]按钮浏览器地址栏都会变化,然后,点击浏览器的[后退]按钮,可以看到在不断返回到页面之前的状态。

●清单7-06 history_push.html(上)/history_push.js(下) image

value="结算"
次被点击了。
// 点击[结算]按钮时添加历史记录
// 点击[后退]按钮回到上一个页面的状态
JavaScript完全学习教程
JavaScript完全学习教程
JavaScript完全学习教程
JavaScript完全学习教程
新标签页
显示所有历史记录
被点击来。

●按照[结算]按钮的点击次数添加历史记录

  首先,history.pushState方法的功能是向浏览器添加历史记录(①)。

●语法 pushState方法 image

data:历史记录中添加的数据
title:识别标题(没有使用)
url:历史记录中的URL

【366页】

  参数data设定的是之后回到这个状态时所需的信息。在这个例子中设定的是当前的计数值(变量count),但是如果是使用Ajax通信(7.4节)等来获取页面的内容时,那么保存的就应该是请求时所需的键值等信息。
  使用[后退]按钮按照历史记录后退的动作,可以使用popState事件监听器来捕捉(②)。可以使用事件对象e的state属性来访问pushState方法中添加的数据(参数data)。在这个例子中,将state属性获得的计数值写回变量count并反映到页面中。