Копировать Вставить в JavaScript - PullRequest
4 голосов
/ 26 января 2010

Это старый вопрос, но у меня все еще проблемы с ним. Видите ли, я пытаюсь вставить некоторые данные Excel в текстовую область, но глупые браузеры при этом замораживаются на длительные периоды времени из-за того, что Бог знает, что делают "умные" парсеры. Я не могу избавиться от этого (загрузка файла исключена, мой начальник хочет, чтобы я вставлял строки из Excel в текстовую область).

Хорошая новость заключается в том, что вставка в стандартное текстовое поле РАБОТАЕТ. Но я не могу заставить их вставлять туда. Поэтому я пытаюсь перехватить событие вставки в области текста, а затем переместить текст в текстовое поле. К сожалению, я остановился на склеивающей части. Я не могу вставить текст через JS в простое текстовое поле.

Итак, мой вопрос: как вставить текст, как вызвать его через JS? Есть некоторые решения, которые работают только в IE, но это, конечно, нехорошо: -).

Ответы [ 5 ]

6 голосов
/ 04 декабря 2014

Simple.

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>

Если вы хотите, вы можете даже избавиться от текстовой области и сделать это более напрямую. Я написал технический пост в блоге , объясняющий, как мы копируем и вставляем в Lucidchart (там, где я работаю).

1 голос
/ 26 января 2010

Извините, не совсем уловил идею. Не можете ли вы присоединить событие xtarea к onpaste (по крайней мере, я знаю, что IE имеет такое событие), а затем просто установить значение textarea на вставленное значение?

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

РЕДАКТИРОВАТЬ: хорошо, похоже, это работает только в IE и более новых версиях FF , но это не кросс-браузерное решение.

0 голосов
/ 26 января 2010

Попробуйте CodeMirror в качестве альтернативного решения. Не проверяет это с помощью функции копирования и вставки с огромным количеством данных Excel, но, возможно, это поможет ...

0 голосов
/ 26 января 2010

Включить копирование JavaScript в буфер обмена в Firefox или Mozilla: http://www.febooti.com/support/website-help/website-javascript-copy-clipboard.html

0 голосов
/ 26 января 2010

Я не могу вставить текст через JS в простое текстовое поле

Когда вы говорите «простое текстовое поле», вы подразумеваете <input type="text">? Если так, то я думаю, что установка его атрибута value для текста, захваченного вами из <textarea>, должна работать.

...