JavaScript黑暗技巧:禁止浏览器点击“后退”按钮

2023-11-10

浏览网页时,当从A页面点击跳转到B页面后,一般情况下,可以点击浏览器上的“后退”按钮返回A页面。

如果进入B页面后,B页面想让访问者留下,禁止返回,是否可以实现呢?

这简直是要控制浏览器的行为,虽然有些邪恶,但确实可以实现,使用特殊的JavaScript代码就可实现。

方法如下:

实现原理:

监听浏览器的popstate事件,该事件会在用户点击浏览器的回退按钮时被触发。

然后,使用History.pushState()方法向当前浏览器会话的历史堆栈中添加一个陷阱状态,该状态会使“回退”操作无效。

JS源码:

<script>

//浏览器返回键事件

pushHistory();

window.addEventListener("popstate", function(e) {

//判断移动端

var userAgentInfo = navigator.userAgent;

var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");

var equipmentType = false;

for (var v = 0; v < Agents.length; v++) {

if (userAgentInfo.indexOf(Agents[v]) != -1) {

equipmentType = true;

break;

}

}

if (equipmentType) {

$("#mask-back").show();

$("#mask-back .back-close").on("click", function() {

$("#mask-back").hide();

})

}

pushHistory(); //注,此处调用,可以让用户一直停留着这个页面

}, false);

function pushHistory() {

var stateeee = {

title: "title",

url: "#"

};

window.history.pushState(stateeee, "title", "#");

}

</script>

测试方法:

建立两个文件:a.html、b.html。

a文件内容简单写一句代码:

<a href="b.html">goto b.html</a>。

b文件内容写入上面的源码。

打开a页面,点击链接进入b页面,这时再点击浏览器上的“后退”按钮,会发现:操作无效,无法后退。

提升强度:

这个黑暗的技巧,虽然使用了不常见的技术方法,但查看页面源码很容易发现其实现原理。

为了保护代码、防止代码被分析,可以对上面的JavaScript代码加密,加密使用JShaman。

进入JShaman官网,贴入代码:

在配置中,勾选“字符串加密”:

然后生成混淆加密的JavaScript代码:

复制粘贴回b文件:

这时,代码成为加密状态,虽然不影响运行,是万万不可能了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript黑暗技巧:禁止浏览器点击“后退”按钮 的相关文章

随机推荐

  • 如何关闭FileZilla Server开机自启

    FileZilla Server开机自启 有些软件开机自启 个人感觉是比较反感的 像流氓一样 如何关闭 选中此电脑 gt 右键单击 gt 点击管理 找到之后FileZilla Server FTP server之后右键点击属性 改成手动启动
  • 重t2加权是什么意思_王者荣耀中说的T0、T1,到底是啥意思?这下总算清楚了

    王者荣耀这款游戏可以说是相当火了 玩这款游戏的人应该有3亿左右了吧 而在这么庞大的人群中 也孕育出一种独特的语言 甚至有些老玩家也是没有听说过得 就比如今天我们要聊的 在王者荣耀中说的TO T1到底是什么意思呢 今天就给大家科普一下 TO英
  • testflight测试的直播软件,怎么使用 TestFlight 测试 App,注意些什么?

    原标题 怎么使用 TestFlight 测试 App 注意些什么 TF签名是什么 TF签名全称为TestFlight 实际为一个苹果官方研发的一款提供给ios开发者内测的一个工具类App 这款app可以在苹果商店搜索到 用户直接搜索打开Te
  • java 图形与动画_如何优化java动画编程中的显示效果

    展开全部 Java动画编62616964757a686964616fe4b893e5b19e31333264623234程有多种实现方法 但它们实现的基本原理是一样的 即在屏幕上画出一系列的帧来造成运动的感觉 Java多线程技术是Java动
  • C++——STL库中迭代器以及其代码实现简介

    文章目录 一 STL库中迭代器的简介 1 迭代器的定义 2 迭代器常用的运算 3 vector和deque提供的额外运算 4 迭代器的取值范围 二 STL库中迭代器的代码实现 总结 一 STL库中迭代器的简介 1 迭代器的定义 迭代器 it
  • ARouter初始化及跳转原理

    ARouter初始化及跳转原理 编译后生成文件 仓库类 class Warehouse Cache route and metas static Map
  • GZipStream归纳总结

    GZipStream 类 提供用于压缩和解压缩流的方法和属性 创建压缩流实例有个参数枚举CompressionMode 它有两个值分别是Compress DeCompress 表示压缩和解压 压缩和解压代码 实例化FileStream对象i
  • ZGC垃圾收集器-JVM(十五)

    上篇文章说了G1的特性 无分代 复制算法 大内存就可以用G1 可预测stw时间等特性 G1垃圾收集分类 JVM 十四 ZGC收集器 XX UseZGC ZGC Z Garbage Collector 是在jdk11新加入的低延迟垃圾收集器
  • Junit中测试插入等无返回值的操作要注意的问题

    问题一 到底插不插进数据库 由于测试数据有时比较随意 插入数据库会对数据库进行污染 我们在测试的时候通过控制事务 一般不提交至数据库 例如通过spring控制事务提交 默认让其回滚 TransactionConfiguration defa
  • 【C/C++内功心法】剖析预处理过程,详解其他预处理指令,提升C/C++内功

    文章目录 前言 一 undef 二 命令行定义 三 条件编译 四 文件包含 1 头文件被包含的方式 2 嵌套文件包含 总结 前言 大家好啊 我是不一样的烟火a 今天我将会为大家详细讲解其他的预处理指令 虽然本文章读完后不能让大家代码写得飞起
  • 分布式事务总结

    这次使用分布式事务框架过程中了学习了一些分布式事务知识 所以本文我们就来聊聊分布式事务那些事 首先我们先回顾下什么是事务 事务 什么是事务 这个作为后端开发 日常开发中只要与数据库有交互 肯定就会使用过事务 现在摘抄一段wiki的解释 解释
  • 直播项目vue-video-player 播放 rtmp流

    最近写的一个项目是跟直播相关的 那就必须涉及到播放器 我选择用的是vue video player 记录几个自己遇到的坑 第一个就是直播画面卡住的问题 我遇到的问题很奇怪 flash也打开了 画面也有了 但是就是一直卡住不动 这个问题卡了我
  • css行高包含哪些,详解CSS行高

    行高 即CSS中line height所描述的属性 它表示两行文字间基线之间的距离 不允许使用负值 在弄清行高之前 我们先来了解几个概念 顶线 中线 基线 底线 上图所示线条从上到下为 1 2 3 4 5 6 7 8 9 10 vertic
  • 修改dns服务器转发器,域服务器dns设置转发器

    域服务器dns设置转发器 内容精选 换一换 CCE支持通过dnsPolicy标记每个Pod配置不同的DNS策略 None 表示空的DNS设置 这种方式一般用于想要自定义DNS配置的场景 而且 往往需要和dnsConfig配合一起使用达到自定
  • 解决uniapp执行switchTab跳转成功之后不调用onLoad的方法

    目录 页面结构 遇到的问题 解决方案 页面结构 现有一个tab页面分为两个页签 一个下单页面 一个订单页面 onLoad 页签默认为下单 this current 0 获取商品列表 this getList 点击确认按钮提交订单之后 跳转到
  • node.js和vue.js

    链接 https www zhihu com question 33578075 answer 56951771 如果你去年注意过技术方面的新闻 我敢说你至少看到node js不下一两次 那么问题来了 node js是什么 有些人没准会告诉
  • 【ES6】数组的扩展(二)之Array.from()和Array.of()

    Array from Array from方法用于将两类对象转为真正的数组 类似数组的对象和可遍历 iterator 的对象 包括Map和Set let arrayLike 0 a 1 b 2 c length 3 ES5的写法 var a
  • emacs org-mode插入excel实现的表格内容

    org mode插入excel文本里的表格内容 补充 org mode插入excel文本里的表格内容 excel用于写表格 还是很常用的 excel的表格内容 默认是用Tab键隔开 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4
  • c语言中的where用法,c#查询关键字where 子句的运用

    c 查询关键字where 子句的运用 引导语 where是数据库中的一个指令 一般用于用于规定选择的标准 在c 中同样适用 以下是小编整理的c 查询关键字where 子句的运用 欢迎参考阅读 where 子句用在查询表达式中 用于指定将在查
  • JavaScript黑暗技巧:禁止浏览器点击“后退”按钮

    浏览网页时 当从A页面点击跳转到B页面后 一般情况下 可以点击浏览器上的 后退 按钮返回A页面 如果进入B页面后 B页面想让访问者留下 禁止返回 是否可以实现呢 这简直是要控制浏览器的行为 虽然有些邪恶 但确实可以实现 使用特殊的JavaS