1

我有一些 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.
});

非常感激。

4

1 回答 1

1

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

于 2013-10-29T03:02:00.883 回答