在WebApp或浏览器中,会有点击返回、后退、上一页等按钮实现自己的关闭页面、调整到指定页面、确认离开页面或执行一些其它操作的需求。可以使用 popstate 事件进行监听返回、后退、上一页操作。

一、简单介绍 history 中的操作

  1.window.history.back(),后退

  2.window.history.forward(),前进

  3.window.history.go(num),前进或后退指定数量历史记录

  4.window.history.pushState(state, title, utl),在页面中创建一个 history 实体。直接添加到历史记录中。

    参数:state:存储一个对象,可以添加相关信息,可以使用 history.state 读取其中的内容。

      title:历史记录的标题(目前浏览器不支持)。

      url:创建的历史记录的链接。进行历史记录操作时会跳转到该链接。

  5.window.history.replaceState(),修改当前的 history 实体。

     参数:state:存储一个对象,可以添加相关信息,可以使用 history.state 读取其中的内容。

       title:历史记录的标题(目前浏览器不支持)。

       url:创建的历史记录的链接。进行历史记录操作时会跳转到该链接。

  6.popstate 事件,history 实体改变时触发的事件。

  7.window.history.state,会获得 history 实体中的 state 对象。

  二、使用方法

    取消默认的返回操作:

    1.添加一条 history 实体作为替代原来的 history 实体

function pushHistory() {
// 第一个实体
var state = {
title: "index",
url: "https://www.cnblogs.com/smallclown/"
};
window.history.pushState(state, "index", location.href);
// 第二个实体
state = {
title: "index",
url: "https://www.cnblogs.com"
};
window.history.pushState(state, "index", location.href);
// 第三个实体 不要以为最后的空实体没有用 可以解决上来就执行popstate的问题 相当于炮灰
tate = {
title: "index",
url:""
};
window.history.pushState(state, "index", "");
}

// history.pushState(state, title, url);
// history.replaceState(state, title, url); 替换

    2.监听 popstate 事件

function addHandler() {
pushHistory();
window.addEventListener("popstate", function(e) {
location.href = window.history.state.url;
}
});
//或者
window.onpopstate=function(e){
location.href = window.history.state.url;
}
}
addHandler();

  PS:  每次返回都会消耗一个 history 实体,若用户选择取消离开,则需要继续 pushState 一个实体 ;

    如果把地址换了一个你想去的地址,就形成了一个简单的网页劫持

监听浏览器返回,pushState,popstate 事件,window.history对象的更多相关文章

  1. 监听浏览器返回键、后退、上一页事件(popstate)操作返回键

    在WebApp或浏览器中,会有点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面.确认离开页面或执行一些其它操作的需求.可以使用 popstate 事件进行监听返回.后退.上一页操作. 一 ...

  2. vue JS实现监听浏览器返回按键事件

    // 这个是监听浏览器回退键的returnButton () { let vm = this; $(document).ready(function () { if (window.history & ...

  3. js监听浏览器返回事件

    $(function(){ pushHistory(); window.addEventListener("popstate", function(e) { window.loca ...

  4. js 监听浏览器刷新还是关闭事件 - 转

    监听页面关闭: window.onbeforeunload = function() { //鼠标相对于用户屏幕的水平位置 - 窗口左上角相对于屏幕左上角的水平位置 = 鼠标在当前窗口上的水平位置 v ...

  5. 监听浏览器tab选项卡选中事件,点击浏览器tab标签页回调事件,浏览器tab切换监听事件

    js事件注册代码: <script> document.addEventListener('visibilitychange',function(){ //浏览器tab切换监听事件 if( ...

  6. js 监听浏览器刷新还是关闭事件

    转载大神 http://www.cnblogs.com/gavin0517/p/5827405.html

  7. javascript监听手机返回键

    javascript监听手机返回键 <pre> if (window.history && window.history.pushState) { $(window).on ...

  8. vue 路由缓存 路由嵌套 路由守卫 监听物理返回

    最近开发vue项目,遇到的一些问题,这里整合一下,看到一些博客已经有写相关知识,然后自己再次记录一下. 这是关于vue路由相关比较常见的问题,以后遇到相关路由的问题,会不断更新这篇博客. 需求1:从填 ...

  9. JS监听浏览器的返回、后退、上一页按钮的事件方法

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包等 ...

随机推荐

  1. grunt 常用插件有哪些?

    作者:顾城链接:https://www.zhihu.com/question/21917526/answer/19747259来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  2. SQL Server2008宝典 全书代码

    -- ============================================= -- Create database template -- ==================== ...

  3. wxpython wx.windows的API

    wx.Window is the base class for all windows and represents any visible object on screen. All control ...

  4. 关于 document.compatMode

    今天查资料时无意发现一个以前没有注意到过的属性:document.compatMode 经过一番资料的查询后,了解到以下信息: 我们都知道IE有两种盒子模型,在不声明 !DOCTYPE 时是混杂模式 ...

  5. Java—IO流 File类的常用API

    File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOE ...

  6. bat 日期格式设置

    转自:http://hi.baidu.com/awillaway/item/c61f964dc238190ce935044d   日期可以用扩展表示方法,你在cmd运行以下几个命令就明白了: echo ...

  7. matlab中fprintf函数的具体使用方法

    matlab中fprintf函数的具体使用方法实例如下: fprintf函数可以将数据按指定格式写入到文本文件中.其调用格式为: 数据的格式化输出:fprintf(fid, format, varia ...

  8. winform中 让 程序 自己重启

    private void button1_Click(object sender, EventArgs e)        {            Application.ExitThread(); ...

  9. netstat 和 lsof 查看网络状态

    netstat和lsof都是linux下的工具,可以用于查看系统的网络状态. netstat netstat可以打印 网络连接,路由表,接口统计数据,还有多播和masquerade连接相关的东西(不熟 ...

  10. chpasswd

    功能说明:从标准输入中读取一定格式的用户名.密码来批量更新用户的密码,其格式为 “用户名:密码”. 参数选项:-e 默认格式是明文密码,使用-e参数则需要加密的密码.