【问题标题】:IE11 pasting clipboard data to an input element annoyanceIE11 将剪贴板数据粘贴到输入元素的烦恼
【发布时间】:2013-10-28 16:42:22
【问题描述】:

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

非常感谢。

【问题讨论】:

    标签: jquery html clipboard copy-paste


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-23
      • 2020-01-28
      • 2015-07-24
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      相关资源
      最近更新 更多