操縱瀏覽器歷史記錄 : popstate() 、 history.pushState() 、 window.history.pushState()

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

一、歷史記錄前進與后退

1.后退:

window.history.back() -- 相當于用戶在瀏覽器的工具欄上點擊返回按鈕;

2.前進:

window.history.forward() -- 相當于用戶在瀏覽器的工具欄上點擊前進按鈕;

3.移動到指定歷史記錄點:

通過go()方法,指定一個相對于當前頁面位置的數值,從當前會話的歷史記錄中加載頁面(當前位置頁面索引:0,上一頁:-1,下一頁:1);

window.history.go(-2)--后退2頁,相當于調用兩次back();

window.history.go(1)--前進1頁,相當于調用forward();

*可以通過window.history.length,得到歷史記錄棧中一共有多少頁。

二、添加/修改歷史記錄條目

1.pushState(stateObject,title,URL):

逐條添加歷史記錄條目,

a.狀態對象(stateObject)--一個JavaScript對象,與用pushState()方法創建的新歷史記錄條目關聯。無論何時用戶導航到新創建的狀態,popstate事件都會被觸發,并且事件對象的state屬性都包含歷史記錄條目的狀態對象的拷貝;(ps:FireFox瀏覽器強行限制狀態對象的大小為640k,超出則拋異常,可通過sessionStorage或localStorage存儲大的數據)

b.標題(title)--傳入一個簡短的標題,標明將要進入的狀態;(FireFox瀏覽器目前會忽略該參數,但是傳一個空字符串會比較安全)

c.地址(URL)--新的歷史記錄條目的地址(可選,不指定的話則為文檔當前URL);瀏覽器不會在調用pushState()方法后加載該地址;傳入的URL與當前URL應該是同源的,否則,pushState()會拋出異常。

*某種意義上,調用pushState()有點類似于設置window.location='#foo',它們都會在當前文檔內創建和激活新的歷史記錄條目。

(拓展:window.location--待研究)

2.replaceState():

history.replaceState()操作類似于history.pushState(),不同之處在于replaceState()方法會修改當前歷史記錄條目而并非創建新的條目。

3.popstate():

每當激活的歷史記錄發生變化時,都會觸發popstate事件。如果被激活的歷史記錄條目是由pushState所創建,或是被replaceState方法影響到的,popstate事件的狀態屬性將包含歷史記錄的狀態對象的一個拷貝。

讀取當前狀態:

如果頁面中使用pushState()或replaceState()方法設置了一個狀態對象,然后用戶重啟了瀏覽器。當頁面重新加載時,頁面會觸發onload事件,但不會觸發popstate事件。可以使用history.state直接讀取當前歷史記錄條目的狀態,而不需要等待popstate事件

調用history.pushState()或者history.replaceState()不會觸發popstate事件.pushState事件只會在其他瀏覽器操作時觸發, 比如點擊后退按鈕(或者在JavaScript中調用history.back()方法)。

調用方法:

window.onpopstate = function(event) {//做一些操作event.state; //  當前歷史記錄條目的狀態 
};
或者:
window.addEventListener('popstate', function(event) {//做一些操作
});
?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448405.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++之拷貝函數

拷貝構造函數是一種特殊的構造函數,函數的名稱必須和類名稱一致,它的唯一的一個參數是本類型的一個引用變量,該參數是const類型,不可變的。例如:類X的拷貝構造函數的形式為X(X& x)。 以下情況都會調用拷貝構造函數…

spring Boot 學習(七、Spring Boot與開發熱部署)

一、熱部署在開發中我們修改一個Java文件后想看到效果不得不重啟應用,這導致大量時間 花費,我們希望不重啟應用的情況下,程序可以自動部署(熱部署)。有以下四 種情況,如何能實現熱部署。?1、模板引擎 – 在…

解決: Cannot find module ‘webpack-cli/bin/config-yargs‘、Error: Cannot find module ‘webpack-cli‘

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 npm 、cnpm 、node、vue 全都裝上了,就是 webpack 裝不上!! 最后我把整個服務器還原為初始設置了&…

路由器和交換機的區別詳解

很多人對路由器和交換機混為一談,甚至搞不清楚路由器和交換機有什么區別,有的用戶還認為是一樣的功能,看名字就知道是兩種不同的產品,功能雖然有些類似,但絕對不會完全相同,否則就沒有必要用兩個全面不同的…

C++之構造函數和析構函數強化

構造與析構調用順序: #include <stdio.h>class Test9_1 { public:Test9_1 (int a){m_a a;printf ("9_1 1111111111111111111構造函數....a: %d\n", a);}// 析構的順序和構造的順序相反&#xff0c;先構造的后析構~Test9_1(){printf ("9_1 1111111111111…

Oracle的逆向工程generatorConfig

<?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <ge…

最簡單、圖解:阿里云服務器上裝 Docker 、 CentOS上 docker安裝(3分鐘裝完)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 // 為了裝 vue 的 webpack &#xff0c;我把整個服務器重置了。docker 也沒有了&#xff0c;只好重新裝 docker ... 1. 準備工作 yum …

C++之對象的動態建立和釋放

new和delete的用法&#xff1a; 1&#xff09;在軟件開發過程中&#xff0c;常常需要動態地分配和撤銷內存空間&#xff0c;例如對動態鏈表中結點的插入與刪除。在C語言中是利用庫函數malloc和free來分配和撤銷內存空間的。C提供了較簡便而功能較強的運算符new和delete來取代m…

7.11牛客題(指針)

今天在牛客做錯了一道題&#xff0c;在此寫下感觸題目如下&#xff1a;若有說明:int i, j2,*p&i;,則能完成 ij 賦值功能的語句是&#xff08;B&#xff09;。A i*p; B *p*&j; C i&j; D i**p; 分析&#xff1a;題目中&#xff0c;p指針指向i的地址&#xff0c;A選項…

gpu簡介

GPU英文全稱Graphic Processing Unit&#xff0c;中文翻譯為“圖形處理器”。GPU是相對于CPU的一個概念&#xff0c;由于在現代的計算機中&#xff08;特別是家用系統&#xff0c;游戲的發燒友&#xff09;圖形的處理變得越來越重要&#xff0c;需要一個專門的圖形的核心處理器…

WM有約(五):部署應用程序

WM有約&#xff08;五&#xff09;&#xff1a;部署應用程序 Written by Allen Lee 創建安裝包 創建一個新的項目&#xff0c;用來部署Windows Mobile應用程序的項目模板是Other Project Types\Setup and Deployment下的Smart Device CAB Project&#xff1a; 圖 1 輸入項…

“ 我亦想望,如池魚悠悠 ... “

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 // 鬧鐘響了&#xff0c;起床&#xff0c;洗漱完畢&#xff0c;背上電腦出門&#xff0c;到公司打卡 8&#xff1a;20 。 " 我亦想…

C++之靜態成員變量和靜態成員函數

靜態成員變量 關鍵字 static 可以用于說明一個類的成員&#xff0c; 靜態成員提供了一個同類對象的共享機制 把一個類的成員說明為 static 時&#xff0c;這個類無論有多少個對象被創建&#xff0c;這些對象共享這個 static 成員 靜態成員局部于類&#xff0c;它不是對象成…

熄火/死火

定義 當反應器正在以顯著的反應速率進行操作時&#xff0c;若降低進料入口的溫度&#xff0c;使它達到多重態區域的下限&#xff0c;反應速度會突然大幅度下降&#xff0c;反應基本上停止。這個現象稱為熄滅。相應的入口溫度稱為熄滅點。一般指的是汽車熄火。發生原因 有…

H3C 以太網集線器

轉載于:https://www.cnblogs.com/fanweisheng/p/11169349.html

解決: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 問題描述&#xff1a;阿里云服務器 磁盤初始化之后用 git-bash ssh rootxx.xx.xx.xx 方式登陸服務器&#xff0c;報錯如下。 WARNIN…

C++之面向對象模型

C對象模型可以概括為以下2部分&#xff1a; 1. 語言中直接支持面向對象程序設計的部分&#xff0c;主要涉及如構造函數、析構函數、虛函數、繼承&#xff08;單繼承、多繼承、虛繼承&#xff09;、多態等等。 2. 對于各種支持的底層實現機制。 在c語言中&#xff0c;“數據”…

netty接收大文件的方法

參考:http://blog.csdn.net/linuu/article/details/51371595 https://www.jianshu.com/p/a0a51fd79f62 netty默認是只能接收1024個字節&#xff0c;但是我們要傳輸大文件怎么辦&#xff1f; 上代碼&#xff1a; 改之后服務端&#xff1a; package server;import io.netty.boots…

制動失靈

定義 制動過程中&#xff0c;由于制動器某些零部件的損壞或發生故障&#xff0c;使運動部件(或運動機械)不能保持停止狀態或不能按要求停止運動的現象。制動失靈的原因 制動失靈的關鍵在于制動系統無法對汽車施加足夠的制動力&#xff0c;包括制動液管路液位不足或進入…

webpack 入門,說一下那些不入流的知識點、module.exports{ } 中配置說明

先說說Vue-Cli&#xff08;Vue項目腳手架&#xff09; 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 關于它能干什么&#xff0c;就不再贅述了&#xff0c;我們主要談談生成的與webp…