如何使用 JavaScript 阻止浏览器默认的退格按钮历史记录操作?

2024-04-29

有没有办法防止用户在浏览器中按退格键时发生默认操作?

我不需要阻止用户离开,只需阻止用户执行默认的退格操作即可。我需要退格键来做一些不同的事情(这是一个游戏)。

我尝试过但没有成功:

window.addEventListener('keydown', function(e) {
    if (e.keyCode === Game.Key.BACK_SPACE)
    {
        e.preventDefault();
        e.stopPropagation();
        return false;
    }
}, false);

如果我在 if 中放置警报,则按下退格键时将显示警报。所以,keyCode 是正确的。

这必须适用于 Opera 10.6、Firefox 4、Chrome 6、Internet Explorer 9 和 Safari 5。


你不需要return false or e.stopPropagation();对于附加的侦听器来说,两者都不会产生任何影响addEventListener。您的代码在 Opera 中不起作用,它只允许您抑制默认浏览器行为keypress事件,或者IE addEventListener。只要您还没有,以下内容应该适用于所有浏览器keydown and keypress事件处理程序document.

EDIT:它现在还过滤掉源自<input> or <textarea>元素:

function suppressBackspace(evt) {
    evt = evt || window.event;
    var target = evt.target || evt.srcElement;

    if (evt.keyCode == 8 && !/input|textarea/i.test(target.nodeName)) {
        return false;
    }
}

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

如何使用 JavaScript 阻止浏览器默认的退格按钮历史记录操作? 的相关文章

随机推荐

  • Apache NiFi 替换文本处理器以使用控制字符作为分隔符

    在将固定宽度文件转换为用普通字符 如 分隔时使用替换文本处理器 作为分隔符正在起作用 然而 考虑 u0001 或 A 或 A 并不能按预期工作 使用您可以使用的特殊字符literal unescapeXmlnifi表达函数 literal
  • 如何将 JavaScript 数组转换为特定的对象列表

    我有一个像这样的数组 empName Sushant departments HR DEV empName Prashant departments HR MNGT 我想把这个数组转换成 Sushant HR Prashant HR Sus
  • React 有传递 props 的简写吗?

    我厌倦了一直这样做
  • RxJava 相当于 orElse 是什么

    在其他语言的流 函数域中有一个常见的操作 那就是 orElse 它就像一个 if 当当前链没有得到任何结果时 它会更改为备用链 在具有 Maybe 类型的语言中 它基本上会继续 Some 类型的链或更改为 None 类型的 orElse 理
  • 添加样式后如何重置回默认CSS?

    基本上 我通过添加如下样式类来更改 javafx 中文本字段的 css textfield getStyleClass add textfieldstyle 但后来我希望能够将其恢复到原来的样子 但由于本例中的原始外观是 JavaFX 的默
  • Xcode 6 找不到 cocoapods 库

    我正在尝试构建一个使用 CocoaPods 的 Xcode 5 项目 POD 文件如下 target MyProjectName do pod AFNetworking 2 2 1 pod SVProgressHUD 0 9 pod MDH
  • 出现致命错误 Uncaught CurlException: 26: 无法打开文件

    我正在尝试使用 PHP 的 GD 库创建朋友的动态图像 并且需要将其上传到我的朋友个人资料中 但我不断收到错误消息 致命错误 未捕获的 CurlException 26 无法打开第 820 行 home p170r760 public ht
  • “不能从静态上下文引用非静态方法”JPA Java

    我从这一行收到 无法从静态上下文引用非静态方法 错误 createStudent stu00001 new Date 631152000000 m WB new Type Name Bob Smith 如何正确组成 日期 我查看了 API
  • 虚拟类作为 Spirit 的 AST 节点

    我当时正在和一个朋友一起开发一种语言的解释器 我们从一个我猜想不太明智的决定开始 我们首先制作所有用于执行的元素 实际上是由不同类组成的树 但现在看着 boost 的例子 我对如何合并两者感到很困惑 我知道从什么开始 语法 我知道要达到什么
  • ImportError:尝试在没有已知父包的情况下进行相对导入[重复]

    这个问题在这里已经有答案了 我正在学习使用 python 编程 并且在从包中的模块导入时遇到问题 我正在使用 Visual Studio 代码和 Python 3 8 2 64 位 我的项目目录 https i stack imgur co
  • 通过getattr动态获取dict元素?

    我想动态查询我想要检索的类中的哪些对象 getattr似乎是我想要的 并且它对于类中的顶级对象表现良好 但是 我还想指定子元素 class MyObj object def init self self d a 1 b 2 self c 3
  • 如何分叉我自己的 GitHub 存储库?

    所以 Git 的完全新手 阅读了指南 认为我已经具备了基础知识 但在实现这一目标时遇到了困难 我为我的通用标记源代码创建了一个存储库 只是我每次突破时都会重复使用的东西 它被称为markupDNA git 我想在我的 mac 站点目录中有不
  • 如何使用 Retrofit 2 下载 pdf 文件

    我在下载带改造的 pdf 文件时遇到困难 我的代码生成了一个文件 但它的大小错误 并且当 pdf 打开时它是空白的 这就是我的 php web 服务返回 pdf 文件的方式 param Slim Slim app param String
  • 如何打开电子邮件应用程序到特定文件夹PowerShell?

    我想从 PowerShell 打开特定帐户内特定文件夹的 Windows Mail 应用程序 这可能吗 我从中学到了这个帖子 https stackoverflow com questions 37331949 how to start m
  • 更改 WPF 中 Canvas 的坐标系

    我正在编写一个地图应用程序 它使用 Canvas 来定位元素 对于每个元素 我必须以编程方式将元素的纬度 经度转换为画布的坐标 然后设置 Canvas Top 和 Canvas Left 属性 如果我有一个 360x180 画布 我可以将画
  • Grails 中 findAll、getAll 和 list 的区别

    使用 Grails 有多种方法可以完成同一件事 查找所有域类实例 Book findAll Book getAll Book list 检索指定 id 的域类的实例 Book findById 1 Book get 1 你什么时候使用每一个
  • joomla 中的文章存储在哪里?

    抱歉 这可能是一个新手问题 我要进入管理的文章管理器部分 我确实看到了一些文章 但我想知道这是存储这些文章的表 我只是在数据库中看到很多表 但我无法猜测哪些表存储了文章管理器的内容 Thanks jos content是保存文章的表 jos
  • MobX - 当我可以在将数据注入 React 组件时使用“inject”时,为什么我应该使用“observer”

    MobX 文档建议我应该使用observer在我的所有组件上 然而 通过使用注入 我可以更细粒度地控制哪些数据导致组件的重新渲染 我的理解是我observer 最后一次渲染中所有访问的可观察量的更改将导致重新渲染 即使可观察量嵌套在数据存储
  • LINQ + TransactionScope 不会更改 SQL Server Profiler 中的隔离级别

    我使用以下格式通过 linq 提交对数据库的更改 Begin Transaction Scope Serialized Required Check Business Rule 1 N MyDataContext SubmitChanges
  • 如何使用 JavaScript 阻止浏览器默认的退格按钮历史记录操作?

    有没有办法防止用户在浏览器中按退格键时发生默认操作 我不需要阻止用户离开 只需阻止用户执行默认的退格操作即可 我需要退格键来做一些不同的事情 这是一个游戏 我尝试过但没有成功 window addEventListener keydown