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

boyanx6个月前技术教程24

浏览网页时,当从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文件:

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

标签: css禁止复制

相关文章

从网站检查中复制CSS代码的最简单方法

在处理网站项目时,您是否曾经对使用开发工具感到沮丧?必须在您正在处理的网页和检查器之间来回切换以查看CSS并进行调整通常可能是一个挑战。值得庆幸的是,有一个浏览器扩展程序可以简化该过程:CSS Sca...

IT之家学院:如何禁止Win10“无法验证发布者”提示?

最近在IT圈和论坛中发现,很多用户提问怎么去掉Win10老弹出的“无法验证发布者”的提示框,今天IT之家就和朋友们分享一下解决该问题的办法。这个方法要用到注册表操作,因此提示各位最好先用软媒魔方的清理...

教你怎么破解百度文库复制限制

不管是工作,还是学习,经常需要在网上查找一些资料,但是当找到的文档内容不能直接复制粘贴怎么办呢?很多人首先想到的办法,应该是用QQ截图提取文字,或者通过网页源代码查看!这里教你1个更高级的破解妙招,学...

17个CSS知识点整理

微信ID:WEB_wysj(点击关注) ◎ ◎ ◎ ◎ ◎◎◎◎◎一┳═┻︻▄(点击页底“阅读原文”下载源代码)● ● ●1、对WEB标准以及W3C的理解与认识标签闭合、标签小写、不乱嵌套、提高搜索机...

电子文稿不能复制粘贴的破解方法

1、将Internet的安全级别设置为“高”。操作方法:①启动IE→点击菜单“工具”中“Internet选项”→点“安全”→自定义级别→选择“安全级-高”→确定→按F5“刷新”;这时你就可复制了,因为...

大厂都在用的MySQL主从复制、读写分离及高可用方案

1 单机 =》集群随着数据量的增大,读写并发的增加,系统可用性要求的提升,单机 MySQL 出现危机:容量问题,难以扩容,考虑数据库拆分、分库分表读写压力,QPS 过大,特别是分析类需求会影响到业务事...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。