IE11将剪贴板数据粘贴到输入元素烦恼

时间:2013-10-28 16:42:22

标签: jquery html clipboard copy-paste

我有一些javascript基本上听了特定输入文本元素上的“粘贴”事件。我通过jQuery做了这个事件绑定。现在,在IE的早期版本中,事情很有效。

但升级到IE11后,行为也不同了。

方案: 我正在复制和粘贴由CR和LF分隔的多个关键字(电子表格中有多行)。在javascript中,在“粘贴”事件处理程序中,我读取剪贴板数据并将所有CR / LF字符转换为单个逗号,然后我将此转换后的数据字符串设置回剪贴板。同样,这在以前版本的IE中也很有用。

IE11中的行为如下: 粘贴后,“粘贴”事件处理程序会被调用,我提到的所有内容都会发生。不幸的是,输入元素中的粘贴结果仍然没有正确格式化。后续粘贴确实显示了正确的逗号分隔字符串(因为我在处理程序中做的最后一件事是将转换后的字符串设置为剪贴板)。

问题: 我是否错误地处理了此粘贴事件处理程序? 我再次处理粘贴事件,转换剪贴板数据,然后将转换后的数据设置回剪贴板。在以前的IE版本中,这是第一次粘贴。但是在IE11中,转换后的数据字符串会粘贴在第一次粘贴后的任何粘贴事件上。

这是功能:

 $("input").bind("paste", function (e) {
       // for multi rows of spreadsheet data.
       // format so that new line & carriage return are converted into a comma.
       var rawText = window.clipboardData.getData("text");
       var delimitedText = rawText.replace(/\r\n/g, ', ');
       window.clipboardData.setData("text", delimitedText); // this is why subsequent pasting works fine.
});

非常感谢。

1 个答案:

答案 0 :(得分:1)

我通过从其他帖子中找到类似的问题来解决这个问题。 解决方案是使用setTimeout,超时为100毫秒。 以这种方式设置使它像魅力一样工作。