BOM ---history对象

255 阅读3分钟

这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

前言

今天我们来讲一讲这个BOM里的history对象。history 对象表示当前窗口首次使用以来用户的导航历史记录。因为 history 是 window 的属性,所以每个 window 都有自己的 history 对象。出于安全考虑,这个对象不会暴露用户访问过的 URL ,但可以通过它在不知道实际 URL 的情况下前进和后退。

导航

go ()方法可以在用户历史记录中沿任何方向导航,可以前进也可以后退。这个方法只接收一个参数,
)方法。 这个参数可以是一个整数,表示前进或后退多少步。负值表示在历史记录中后退(类似点击浏览器的“后
件客户 退”按钮),而正值表示在历史记录中前进(类似点击浏览器的“前进”按钮)。下面来看几个例子: 

/1后退一页\
 history . go (-1);\
1to”或户端,\
/1前进一页\
 history . go (1);\
//前进两页\
 history . go (2);

go (方法的参数也可以是一个字符串,这种情况下浏览器会导航到历史中包含该字符串的第位置。最接近的位置可能涉及后退,也可能涉及前进。如果历史记录中没有匹配的项,则这个方法什也不做,如下所示:
//导航到最近的 wrox . com 页面 history . go (" wrox . com ");
//导航到最近的 nczonline . net 页面 histoy . go (" nCzonline . net ");
go ()有两个简写方法: back ()和 forward ()。顾名思义,这两个方法模拟了浏览器的后退按钮和前进按钮:
//后退一页
history . back ();
1/前进一页
history . forward ();
history 对象还有一个 length 属性,表示历史记录中有多个条目。这个属性反映了历史记录的费量,包括可以前进和后退的页面。对于窗口或标签页中加载的第一个页面, history . length 等于1通过以下方法测试这个值,可以确定用户浏览器的起点是不是你的页面:
if ( history . length ==1){//这是用户窗口中的第一个页面\

 history 对象通常被用于创建“后退”和“前进”按钮,以及确定页面是不是用户历史记录中的一条记录。
注意如果页面 URL 发生变化,则会在历史记录中生成一个新条目。对于2009年以来发布的主流浏览器,这包括改变 URL 的散列值(因此,把 location . hash 设置为一个新值会在这些浏览器的历史记录中增加一条记求)。这个行为帘被单页应用程序框架用来模拟前进和后退,这样做是为了不会因导航而触发页面刷新。

导航栏的go方法可以进行前进和后退。这也是浏览器有自己的历史状态管理的。用户每次点击都会触发页面刷新的时代早已一去不复返了,“后退”和“前进”按钮对用户来说就代表“帮我切换一个状态”的历史也就随之结束了。

下一节我们来讲一讲history对象的历史管理状态。