复制粘贴在JavaScript中

时间:2010-01-26 20:11:06

标签: javascript clipboard copy-paste

这是一个古老的问题,但我仍然遇到麻烦。你看,我正在尝试将一些Excel数据粘贴到文本区域,但是这些愚蠢的浏览器在执行此操作时会长时间冻结,因为上帝知道他们做了什么“聪明”的解析。我无法摆脱它(文件上传是不可能的,我的老板希望我在文本区域中粘贴Excel中的行)。

好消息是粘贴在标准文本框中。但我不能强迫他们粘贴那里。所以我试图捕获文本区域中的粘贴事件,然后将文本扔到文本框中。不幸的是,我在粘贴部分停了下来。我无法通过JS将文本粘贴到简单的文本框中。

所以我的问题是:如何粘贴文本,如何通过JS调用它?有一些解决方案只能在IE中运行,当然不是很好,当然是:: - )。

5 个答案:

答案 0 :(得分:6)

简单。

var isIe = (navigator.userAgent.toLowerCase().indexOf("msie") != -1 
            || navigator.userAgent.toLowerCase().indexOf("trident") != -1);

document.getElementById('textinput').addEventListener('paste', function(e) {
    var text;
    
    if (isIe) {
        text = window.clipboardData.getData('Text')   
    } else {
        text = e.clipboardData.getData('text/plain');
    }
    
    // Do whatever you want with the text
    console.log(text);
    
    //If you don't want the text pasted in the textarea
    e.preventDefault();
});
<textarea id="textinput"></textarea>

如果你愿意,你甚至可以摆脱textarea并更直接地做到这一点。我写了一篇技术blog post来解释我们如何在Lucidchart(我工作的地方)进行复制和粘贴。

答案 1 :(得分:1)

对不起,没听清楚这个主意。你不能附加到thextarea的onpaste事件(至少我知道IE有这样的事件),然后简单地将textarea的值设置为粘贴值吗?

    pastedContent = window.clipboardData.getData("Text");
    document.getElementById("yourtextarea").value = pastedContent;

编辑:好吧,看起来这只适用于IE和newer versions of FF,但它不是跨浏览器的解决方案。

答案 2 :(得分:0)

  

我无法通过JS将文本粘贴到简单的文本框

当您说“简单文本框”时,您的意思是<input type="text">吗?如果是这样,那么我认为将value属性设置为您从<textarea>捕获的文本应该有效。

答案 3 :(得分:0)

在Firefox或Mozilla中启用javascript复制到剪贴板:http://www.febooti.com/support/website-help/website-javascript-copy-clipboard.html

答案 4 :(得分:0)

尝试CodeMirror作为替代解决方案。没有使用copy / amp; paste with huge / excel数量的数据来检查它,但也许这有帮助......