在浏览器中禁用撤消和重做

Disable Undo and Redo in browsers

本文关键字:撤消 重做 浏览器      更新时间:2023-09-26

我想禁用撤消和重做在所有浏览器使用JavaScript。我想这样做,因为我们的应用内置了自己的撤销和重做历史记录。

我已经可以处理按键禁用撤消和重做通过键盘输入,但我想禁用菜单项,以及。(标准菜单和右键菜单)

这可能吗?即使只在某些浏览器中支持,也比没有好。

我知道这已经过时了,但对于那些好奇的人来说,这对我来说很有用。

$(window).bind('keydown', function(evt) { 
  if((evt.ctrlKey || evt.metaKey) && String.fromCharCode(evt.which).toLowerCase() == 'z') {
    evt.preventDefault();
  }
});

您可以做的一件事是拦截popstate事件。不幸的是,我认为它不能被取消,所以你必须通过添加一个虚拟状态来撤销它。

下面的代码阻止我按回Chrome和FF。请随意在其他浏览器上进行测试。

window.setTimeout(function(){
  window.history.pushState({}, '', '#');
  window.addEventListener("popstate", function() {
    window.history.pushState({}, '', '#');
  });
},1000);

确保适当地修改代码以适应您自己的历史记录。也可以考虑使用HTML5历史API,而不是你自己的历史实现。

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

不可能使用浏览器api。但是有一些方法可以检测或处理方法。Url散列是处理向后或向前事件的一种方法。但是浏览器出于用户安全考虑不支持此功能。你可以搜索javascript url散列脚本,但不要忘记与html5浏览器兼容的脚本。