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

时间:2013-05-16 02:23:39

标签: javascript cross-browser undo-redo

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

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

这可能吗?即使只在某些浏览器中使用它也不会没有。

3 个答案:

答案 0 :(得分:3)

我知道这是旧的,但对于其他好奇的人来说,这对我有用。

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

答案 1 :(得分:1)

您可以做的一件事是拦截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

答案 2 :(得分:0)

使用浏览器api是不可能的。但有几种方法可以检测或处理方法。 url哈希是处理后退或前进事件的一种方法。但浏览器不支持此用户安全。你可以搜索javascript url哈希脚本,但不要忘记与html5浏览器兼容的脚本。