【问题标题】:Capture ctr-z(undo) and ctr-y(redo) with JavaScript and perform custom function使用 javascript 捕获 ctrl-z(undo) 和 ctrl-y(redo) 并执行自定义功能
【发布时间】:2011-09-26 02:11:07
【问题描述】:

我一直在为特定目的编写一种在线电子表格应用程序,同时我还编写了自己的撤消和重做功能。当用户按下 ctr-z 或 ctr-y 时,撤消或重做对文本字段的最后更改。他们是一种使用 javascript 来有效劫持页面上任何地方发生的 ctr-z 和 ctr-y 按键事件并导致它们运行我自己的功能的方法。或者至少禁用标准浏览器功能。

我只需要在 windows 上使用最新版本的 firefox 和 chrome。

【问题讨论】:

    标签: javascript firefox google-chrome javascript-events


    【解决方案1】:

    使用 jQuery:

    $(document).keydown(function (keyEvent) {
       var keyCode = keyEvent.keyCode;
       if (keyEvent.metaKey === true || keyEvent.ctrlKey === true) {
          if (keyCode === 89) {
             //fire your custom redo logic
             keyEvent.preventDefault();
             return false;
          } 
          else if (keyCode === 90) {
             //special case (CTRL-SHIFT-Z) does a redo (on a mac for example)
             if (keyEvent.shiftKey === true) {
                //fire your custom redo logic
             }
             else {
                //fire your custom undo logic
             }
             keyEvent.preventDefault();
             return false;
          }
       } 
    });
    

    这应该处理所有基于键盘的事件。如果用户单击菜单栏中的撤消或右键单击并选择撤消,它将不处理发生的情况。

    【讨论】:

      【解决方案2】:

      你可以在你的页面上设置隐藏文本区域,绑定 onclick 鼠标事件到函数,这将设置焦点到文本区域,绑定这个文本区域的键盘事件,如果一个事件是 keydown 并且键是 z 或 y 并且修改器是 ctrl - 然后调用您的重做/撤消操作。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      相关资源
      最近更新 更多