Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在浏览器中禁用撤消和重做_Javascript_Cross Browser_Undo Redo - Fatal编程技术网

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

Javascript 在浏览器中禁用撤消和重做,javascript,cross-browser,undo-redo,Javascript,Cross Browser,Undo Redo,我想在所有使用JavaScript的浏览器中禁用撤消和重做。我想这样做,因为我们的应用程序有它自己的撤销和重做历史内置 我已经可以通过键盘输入来处理按键以禁用撤消和重做,但我也想禁用菜单项。(标准菜单和右键单击菜单) 这可能吗?即使只在某些浏览器中可能,也比没有要好。您可以做的一件事是拦截popstate事件。不幸的是,我认为它不能被取消,所以你必须通过添加一个虚拟状态来撤销它 以下代码阻止我按回Chrome和FF。可以在其他浏览器上测试它 window.setTimeout(function(

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

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


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

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

以下代码阻止我按回Chrome和FF。可以在其他浏览器上测试它

window.setTimeout(function(){
  window.history.pushState({}, '', '#');
  window.addEventListener("popstate", function() {
    window.history.pushState({}, '', '#');
  });
},1000);
确保根据您自己的历史记录适当地更改代码。 也可以考虑使用HTML5历史API代替您自己的历史实现。
不可能使用浏览器API。但是有一些方法可以检测或处理这些方法。url哈希是处理返回或转发事件的一种方法。但是,出于用户安全考虑,浏览器不支持此功能。您可以搜索javascript url哈希脚本,但不要忘记与html5浏览器兼容的脚本。

我知道这很古老,但对于其他好奇的人来说,这对我很有用

window.setTimeout(function(){
  window.history.pushState({}, '', '#');
  window.addEventListener("popstate", function() {
    window.history.pushState({}, '', '#');
  });
},1000);
$(window).bind('keydown', function(evt) { 
  if((evt.ctrlKey || evt.metaKey) && String.fromCharCode(evt.which).toLowerCase() == 'z') {
    evt.preventDefault();
  }
});

我知道的唯一方法是检测字段中的更改,并检查它是否是由键盘输入、剪切/粘贴或您自己的脚本引起的,然后假设是撤消/重做函数引起的。据我所知,没有可用的事件处理程序来捕获撤消/重做事件,因此(如果您确实需要的话)这可能是唯一的选项。这真的“同时禁用菜单项(标准菜单和右键单击菜单)”吗?i、 它是否会阻止鼠标右键单击上下文菜单中的“撤消”选项?是的,您可能还想禁用上下文菜单。但是,我仍然很好奇,当用户导航到应用程序菜单的编辑->撤消选项时,如何停止事件的传播?我不相信这个问题是关于更改历史记录的状态,而是与contentEditable元素中的撤消/重做相关。