Google chrome 可手持复制/粘贴在某些浏览器中无法正常工作

Google chrome 可手持复制/粘贴在某些浏览器中无法正常工作,google-chrome,safari,copy-paste,handsontable,Google Chrome,Safari,Copy Paste,Handsontable,复制/粘贴功能在Chrome中正常工作,而在Safari中效果不佳。我在MacOS(Maverick)上运行。该代码使用了Handsontable 0.11.4和ZeroClipboard插件 可在两种浏览器中工作的操作: 使用关联菜单在网格内复制和粘贴。例如: 高亮显示包含内容的网格区域,从右键单击菜单中选择“复制”,单击目标单元格并从关联菜单中使用“粘贴” 使用组合键进行剪切或复制以及使用上下文菜单进行粘贴的操作。例如: 选择网格区域并使用Cmd-C或Cmd-X,然后选择目标单元格并从

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

可在两种浏览器中工作的操作:
  • 使用关联菜单在网格内复制和粘贴。例如:

    • 高亮显示包含内容的网格区域,从右键单击菜单中选择“复制”,单击目标单元格并从关联菜单中使用“粘贴”
  • 使用组合键进行剪切或复制以及使用上下文菜单进行粘贴的操作。例如:

    • 选择网格区域并使用Cmd-C或Cmd-X,然后选择目标单元格并从关联菜单中使用粘贴
  • 在Chrome中工作但在Safari中不工作的操作
  • 使用Cmd-P时,在网格单元之间复制/粘贴。也就是说,在Safari中(与Chrome不同),不能使用Cmd-P快捷键将从网格复制的选择粘贴回某个网格区域
  • 从另一个程序(如Excel或Sublime)复制到网格中。它在Chrome中运行良好(使用Cmd-P或粘贴菜单选项),在Safari中根本不起作用。在Safari中运行时,无法将外部程序复制到Handsontable中
  • 调试这个问题很棘手,因为当我在一些代码段中设置断点时,中断操作会阻止“粘贴”功能在Chrome中工作。操作的时间安排使得代码很难调试。我的一个观察是在函数中(第6938行)

    CopyPasteClass.prototype.triggerPaste=函数(事件,str){
    var=这个;
    如果(即.paste回调){
    setTimeout(函数(){
    var val=(str | | that.elTextarea.value)。替换(//\n$/,“”);//删除尾部换行符
    对于(var i=0,ilen=that.pasteCallbacks.length;i
    当我在Safari中使用Cmd-p粘贴并清空时,
    that.elTextarea.value
    的值在Chrome中是正确的。同样,当我从Excel粘贴时,它在Chrome中是正确的,而在Safari中也是空的

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

    浏览器之间网格行为的差异是什么原因造成的

    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);
      }
    };