HandsOnTable复制/粘贴在某些浏览器中无法正常运行

时间:2014-11-22 22:15:23

标签: google-chrome safari copy-paste handsontable

复制/粘贴功能在Chrome中正常运行,在Safari中效果不佳。我在Mac OS(Maverick)上运行。该代码使用Handsontable 0.11.4和ZeroClipboard插件。

在两种浏览器中都有效的操作:

  1. 使用上下文菜单在网格内复制和粘贴。例如:

    • 突出显示包含内容的网格区域,从右键单击菜单中选择复制,单击目标单元格,然后使用上下文菜单中的粘贴。
  2. 使用键组合进行剪切或复制的操作以及用于粘贴的上下文菜单。例如:

    • 选择网格区域并使用Cmd-C或Cmd-X,然后选择目标单元格并使用上下文菜单中的粘贴。
  3. 在Chrome中运行但在Safari

    中运行的操作
    1. 每当使用Cmd-P时,在网格单元之间复制/粘贴。也就是说,在Safari中(与Chrome不同),您无法使用Cmd-P键快捷键将从网格复制的选择粘贴回某个网格区域。
    2. 从另一个程序(如Excel或Sublime)复制到网格中。它在Chrome中运行良好(使用Cmd-P或粘贴菜单选项)并且在Safari中根本不起作用。在Safari中运行时,您无法从外部程序复制到Handsontable。
    3. 调试此问题证明是棘手的,因为当我在某些代码段中设置断点时,中断行为会阻止"粘贴"甚至在Chrome中工作的功能。有一些关于操作时间的事情会使代码难以调试。我做的一个观察是在函数中(第6938行)

      CopyPasteClass.prototype.triggerPaste = function (event, str) {
        var that = this;
        if (that.pasteCallbacks) {
          setTimeout(function () {
            var val = (str || that.elTextarea.value).replace(/\n$/, ''); //remove trailing newline
            for (var i = 0, ilen = that.pasteCallbacks.length; i < ilen; i++) {
              that.pasteCallbacks[i](val, event);
            }
          }, 50);
        }
      };
      

      当我使用Cmd-P在Safari中粘贴并清空时,Chrome中that.elTextarea.value的值是正确的。同样,当我从Excel粘贴时,它在Chrome中是正确的,而当我这样做时,它在Safari中为空。

      桌子在Safari中不起作用的问题本身并不是问题。问题是,在我的公司内部网(在生产环境中),所有浏览器(Windows中的Chrome和Firefox)都像Safari在Mac上的行为一样。我无法将从Excel或文本编辑器复制的内容粘贴到Handsontable网格中。即使我从网格的另一个区域粘贴,也无法使用Ctrl-P进行粘贴。使用网格上下文菜单的“复制”和“粘贴”功能可以正常工作。

      浏览器中网格行为的差异是什么原因?

0 个答案:

没有答案